diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a26ebfc1..8f3e0a49 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.14.0" + ".": "0.15.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 09794c42..0b824ed2 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,2 +1,2 @@ -configured_endpoints: 97 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb%2Forb-77f4e8cf0fc3b3f18c894408f322af7988ae90606235fe5058442409142a33e1.yml +configured_endpoints: 101 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb%2Forb-c5fe55b056b10d6581c877beb0639a8f0a623e52fd9778e56fab8a86439bd31b.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index 866c7e38..37514f77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.15.0 (2025-01-02) + +Full Changelog: [v0.14.0...v0.15.0](https://github.com/orbcorp/orb-java/compare/v0.14.0...v0.15.0) + +### Features + +* **api:** api update ([#161](https://github.com/orbcorp/orb-java/issues/161)) ([d035cba](https://github.com/orbcorp/orb-java/commit/d035cbaf1d1d98117ed800b746e969b1c6b368cc)) + ## 0.14.0 (2024-12-23) Full Changelog: [v0.13.0...v0.14.0](https://github.com/orbcorp/orb-java/compare/v0.13.0...v0.14.0) diff --git a/README.md b/README.md index adfbe079..89816dcf 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ -[![Maven Central](https://img.shields.io/maven-central/v/com.withorb.api/orb-java)](https://central.sonatype.com/artifact/com.withorb.api/orb-java/0.14.0) +[![Maven Central](https://img.shields.io/maven-central/v/com.withorb.api/orb-java)](https://central.sonatype.com/artifact/com.withorb.api/orb-java/0.15.0) @@ -25,7 +25,7 @@ The REST API documentation can be foundĀ on [docs.withorb.com](https://docs.with ```kotlin -implementation("com.withorb.api:orb-java:0.14.0") +implementation("com.withorb.api:orb-java:0.15.0") ``` #### Maven @@ -34,7 +34,7 @@ implementation("com.withorb.api:orb-java:0.14.0") com.withorb.api orb-java - 0.14.0 + 0.15.0 ``` @@ -346,7 +346,7 @@ This library is typed for convenient access to the documented API. If you need t To make requests using undocumented parameters, you can provide or override parameters on the params object while building it. -```kotlin +```java FooCreateParams address = FooCreateParams.builder() .id("my_id") .putAdditionalProperty("secret_prop", JsonValue.from("hello")) diff --git a/build.gradle.kts b/build.gradle.kts index bc8fff11..7d153221 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { allprojects { group = "com.withorb.api" - version = "0.14.0" // x-release-please-version + version = "0.15.0" // x-release-please-version } diff --git a/orb-java-client-okhttp/src/main/kotlin/com/withorb/api/client/okhttp/OrbOkHttpClient.kt b/orb-java-client-okhttp/src/main/kotlin/com/withorb/api/client/okhttp/OrbOkHttpClient.kt index caf3d2a8..61da295b 100644 --- a/orb-java-client-okhttp/src/main/kotlin/com/withorb/api/client/okhttp/OrbOkHttpClient.kt +++ b/orb-java-client-okhttp/src/main/kotlin/com/withorb/api/client/okhttp/OrbOkHttpClient.kt @@ -130,7 +130,7 @@ class OrbOkHttpClient private constructor() { fun apiKey(apiKey: String) = apply { clientOptions.apiKey(apiKey) } - fun webhookSecret(webhookSecret: String?) = apply { + fun webhookSecret(webhookSecret: String) = apply { clientOptions.webhookSecret(webhookSecret) } diff --git a/orb-java-client-okhttp/src/main/kotlin/com/withorb/api/client/okhttp/OrbOkHttpClientAsync.kt b/orb-java-client-okhttp/src/main/kotlin/com/withorb/api/client/okhttp/OrbOkHttpClientAsync.kt index 4c7bfd71..7ccb5cea 100644 --- a/orb-java-client-okhttp/src/main/kotlin/com/withorb/api/client/okhttp/OrbOkHttpClientAsync.kt +++ b/orb-java-client-okhttp/src/main/kotlin/com/withorb/api/client/okhttp/OrbOkHttpClientAsync.kt @@ -130,7 +130,7 @@ class OrbOkHttpClientAsync private constructor() { fun apiKey(apiKey: String) = apply { clientOptions.apiKey(apiKey) } - fun webhookSecret(webhookSecret: String?) = apply { + fun webhookSecret(webhookSecret: String) = apply { clientOptions.webhookSecret(webhookSecret) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClient.kt b/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClient.kt index 943832f3..8f4221f3 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClient.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClient.kt @@ -6,6 +6,7 @@ import com.withorb.api.services.blocking.AlertService import com.withorb.api.services.blocking.CouponService import com.withorb.api.services.blocking.CreditNoteService import com.withorb.api.services.blocking.CustomerService +import com.withorb.api.services.blocking.DimensionalPriceGroupService import com.withorb.api.services.blocking.EventService import com.withorb.api.services.blocking.InvoiceLineItemService import com.withorb.api.services.blocking.InvoiceService @@ -15,6 +16,7 @@ import com.withorb.api.services.blocking.PlanService import com.withorb.api.services.blocking.PriceService import com.withorb.api.services.blocking.SubscriptionService import com.withorb.api.services.blocking.TopLevelService +import com.withorb.api.services.blocking.WebhookService interface OrbClient { @@ -46,5 +48,7 @@ interface OrbClient { fun alerts(): AlertService + fun dimensionalPriceGroups(): DimensionalPriceGroupService + fun webhooks(): WebhookService } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientAsync.kt index 88d26dd0..161df6c8 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientAsync.kt @@ -6,6 +6,7 @@ import com.withorb.api.services.async.AlertServiceAsync import com.withorb.api.services.async.CouponServiceAsync import com.withorb.api.services.async.CreditNoteServiceAsync import com.withorb.api.services.async.CustomerServiceAsync +import com.withorb.api.services.async.DimensionalPriceGroupServiceAsync import com.withorb.api.services.async.EventServiceAsync import com.withorb.api.services.async.InvoiceLineItemServiceAsync import com.withorb.api.services.async.InvoiceServiceAsync @@ -45,4 +46,6 @@ interface OrbClientAsync { fun subscriptions(): SubscriptionServiceAsync fun alerts(): AlertServiceAsync + + fun dimensionalPriceGroups(): DimensionalPriceGroupServiceAsync } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientAsyncImpl.kt b/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientAsyncImpl.kt index 1de69a55..ba6efc41 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientAsyncImpl.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientAsyncImpl.kt @@ -12,6 +12,8 @@ import com.withorb.api.services.async.CreditNoteServiceAsync import com.withorb.api.services.async.CreditNoteServiceAsyncImpl import com.withorb.api.services.async.CustomerServiceAsync import com.withorb.api.services.async.CustomerServiceAsyncImpl +import com.withorb.api.services.async.DimensionalPriceGroupServiceAsync +import com.withorb.api.services.async.DimensionalPriceGroupServiceAsyncImpl import com.withorb.api.services.async.EventServiceAsync import com.withorb.api.services.async.EventServiceAsyncImpl import com.withorb.api.services.async.InvoiceLineItemServiceAsync @@ -95,6 +97,10 @@ constructor( AlertServiceAsyncImpl(clientOptionsWithUserAgent) } + private val dimensionalPriceGroups: DimensionalPriceGroupServiceAsync by lazy { + DimensionalPriceGroupServiceAsyncImpl(clientOptionsWithUserAgent) + } + override fun sync(): OrbClient = sync override fun topLevel(): TopLevelServiceAsync = topLevel @@ -122,4 +128,7 @@ constructor( override fun subscriptions(): SubscriptionServiceAsync = subscriptions override fun alerts(): AlertServiceAsync = alerts + + override fun dimensionalPriceGroups(): DimensionalPriceGroupServiceAsync = + dimensionalPriceGroups } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientImpl.kt b/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientImpl.kt index 895d5af3..f1c01fee 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientImpl.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/client/OrbClientImpl.kt @@ -12,6 +12,10 @@ import com.withorb.api.services.blocking.CreditNoteService import com.withorb.api.services.blocking.CreditNoteServiceImpl import com.withorb.api.services.blocking.CustomerService import com.withorb.api.services.blocking.CustomerServiceImpl +import com.withorb.api.services.blocking.DimensionalPriceGroupService +import com.withorb.api.services.blocking.DimensionalPriceGroupServiceImpl +import com.withorb.api.services.blocking.WebhookService +import com.withorb.api.services.blocking.WebhookServiceImpl import com.withorb.api.services.blocking.EventService import com.withorb.api.services.blocking.EventServiceImpl import com.withorb.api.services.blocking.InvoiceLineItemService @@ -83,6 +87,10 @@ constructor( private val alerts: AlertService by lazy { AlertServiceImpl(clientOptionsWithUserAgent) } + private val dimensionalPriceGroups: DimensionalPriceGroupService by lazy { + DimensionalPriceGroupServiceImpl(clientOptionsWithUserAgent) + } + private val webhooks: WebhookService by lazy { WebhookServiceImpl(clientOptions) } override fun async(): OrbClientAsync = async @@ -113,5 +121,7 @@ constructor( override fun alerts(): AlertService = alerts + override fun dimensionalPriceGroups(): DimensionalPriceGroupService = dimensionalPriceGroups + override fun webhooks(): WebhookService = webhooks } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/core/ClientOptions.kt b/orb-java-core/src/main/kotlin/com/withorb/api/core/ClientOptions.kt index 8a27a863..31d980e0 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/core/ClientOptions.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/core/ClientOptions.kt @@ -159,7 +159,7 @@ private constructor( fun apiKey(apiKey: String) = apply { this.apiKey = apiKey } - fun webhookSecret(webhookSecret: String?) = apply { this.webhookSecret = webhookSecret } + fun webhookSecret(webhookSecret: String) = apply { this.webhookSecret = webhookSecret } fun fromEnv() = apply { System.getenv("ORB_API_KEY")?.let { apiKey(it) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/core/Utils.kt b/orb-java-core/src/main/kotlin/com/withorb/api/core/Utils.kt index 9ce4bcd8..b1dbf27a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/core/Utils.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/core/Utils.kt @@ -17,7 +17,9 @@ internal fun List.toImmutable(): List = @JvmSynthetic internal fun Map.toImmutable(): Map = - if (isEmpty()) Collections.emptyMap() else Collections.unmodifiableMap(toMap()) + if (isEmpty()) immutableEmptyMap() else Collections.unmodifiableMap(toMap()) + +@JvmSynthetic internal fun immutableEmptyMap(): Map = Collections.emptyMap() @JvmSynthetic internal fun , V> SortedMap.toImmutable(): SortedMap = diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/errors/OrbError.kt b/orb-java-core/src/main/kotlin/com/withorb/api/errors/OrbError.kt index e84d496a..50c17f36 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/errors/OrbError.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/errors/OrbError.kt @@ -4,19 +4,23 @@ package com.withorb.api.errors import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter -import com.fasterxml.jackson.databind.annotation.JsonDeserialize +import com.fasterxml.jackson.annotation.JsonCreator +import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects -@JsonDeserialize(builder = OrbError.Builder::class) @NoAutoDetect class OrbError +@JsonCreator private constructor( @JsonAnyGetter + @ExcludeMissing + @JsonAnySetter @get:JvmName("additionalProperties") - val additionalProperties: Map, + val additionalProperties: Map = immutableEmptyMap(), ) { fun toBuilder() = Builder().from(this) @@ -40,7 +44,6 @@ private constructor( putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Alert.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Alert.kt index 0d379278..e33c7d7e 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Alert.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Alert.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -30,25 +30,37 @@ import java.util.Optional * |Customer |A customer's credit balance |`credit_balance_depleted`, `credit_balance_recovered`, and `credit_balance_dropped`| * |Subscription|A subscription's usage or cost|`usage_exceeded` and `cost_exceeded` | */ -@JsonDeserialize(builder = Alert.Builder::class) @NoAutoDetect class Alert +@JsonCreator private constructor( - private val id: JsonField, - private val type: JsonField, - private val createdAt: JsonField, - private val enabled: JsonField, - private val thresholds: JsonField>, - private val customer: JsonField, - private val plan: JsonField, - private val subscription: JsonField, - private val metric: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("type") @ExcludeMissing private val type: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("enabled") + @ExcludeMissing + private val enabled: JsonField = JsonMissing.of(), + @JsonProperty("thresholds") + @ExcludeMissing + private val thresholds: JsonField> = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("subscription") + @ExcludeMissing + private val subscription: JsonField = JsonMissing.of(), + @JsonProperty("metric") + @ExcludeMissing + private val metric: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Also referred to as alert_id in this documentation. */ fun id(): String = id.getRequired("id") @@ -115,6 +127,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Alert = apply { if (!validated) { id() @@ -154,55 +168,47 @@ private constructor( @JvmSynthetic internal fun from(alert: Alert) = apply { - this.id = alert.id - this.type = alert.type - this.createdAt = alert.createdAt - this.enabled = alert.enabled - this.thresholds = alert.thresholds - this.customer = alert.customer - this.plan = alert.plan - this.subscription = alert.subscription - this.metric = alert.metric - this.currency = alert.currency - additionalProperties(alert.additionalProperties) + id = alert.id + type = alert.type + createdAt = alert.createdAt + enabled = alert.enabled + thresholds = alert.thresholds + customer = alert.customer + plan = alert.plan + subscription = alert.subscription + metric = alert.metric + currency = alert.currency + additionalProperties = alert.additionalProperties.toMutableMap() } /** Also referred to as alert_id in this documentation. */ fun id(id: String) = id(JsonField.of(id)) /** Also referred to as alert_id in this documentation. */ - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The type of alert. This must be a valid alert type. */ fun type(type: Type) = type(JsonField.of(type)) /** The type of alert. This must be a valid alert type. */ - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } /** The creation time of the resource in Orb. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The creation time of the resource in Orb. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** Whether the alert is enabled or disabled. */ fun enabled(enabled: Boolean) = enabled(JsonField.of(enabled)) /** Whether the alert is enabled or disabled. */ - @JsonProperty("enabled") - @ExcludeMissing fun enabled(enabled: JsonField) = apply { this.enabled = enabled } /** The thresholds that define the conditions under which the alert will be triggered. */ fun thresholds(thresholds: List) = thresholds(JsonField.of(thresholds)) /** The thresholds that define the conditions under which the alert will be triggered. */ - @JsonProperty("thresholds") - @ExcludeMissing fun thresholds(thresholds: JsonField>) = apply { this.thresholds = thresholds } @@ -211,24 +217,18 @@ private constructor( fun customer(customer: Customer) = customer(JsonField.of(customer)) /** The customer the alert applies to. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** The plan the alert applies to. */ fun plan(plan: Plan) = plan(JsonField.of(plan)) /** The plan the alert applies to. */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The subscription the alert applies to. */ fun subscription(subscription: Subscription) = subscription(JsonField.of(subscription)) /** The subscription the alert applies to. */ - @JsonProperty("subscription") - @ExcludeMissing fun subscription(subscription: JsonField) = apply { this.subscription = subscription } @@ -237,32 +237,33 @@ private constructor( fun metric(metric: Metric) = metric(JsonField.of(metric)) /** The metric the alert applies to. */ - @JsonProperty("metric") - @ExcludeMissing fun metric(metric: JsonField) = apply { this.metric = metric } /** The name of the currency the credit balance or invoice cost is denominated in. */ fun currency(currency: String) = currency(JsonField.of(currency)) /** The name of the currency the credit balance or invoice cost is denominated in. */ - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Alert = Alert( id, @@ -280,19 +281,20 @@ private constructor( } /** The customer the alert applies to. */ - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { validated = true @@ -312,23 +314,28 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - additionalProperties(customer.additionalProperties) + additionalProperties = customer.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer(additionalProperties.toImmutable()) } @@ -350,19 +357,20 @@ private constructor( } /** The metric the alert applies to. */ - @JsonDeserialize(builder = Metric.Builder::class) @NoAutoDetect class Metric + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metric = apply { if (!validated) { validated = true @@ -382,23 +390,28 @@ private constructor( @JvmSynthetic internal fun from(metric: Metric) = apply { - additionalProperties(metric.additionalProperties) + additionalProperties = metric.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metric = Metric(additionalProperties.toImmutable()) } @@ -420,19 +433,20 @@ private constructor( } /** The plan the alert applies to. */ - @JsonDeserialize(builder = Plan.Builder::class) @NoAutoDetect class Plan + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Plan = apply { if (!validated) { validated = true @@ -452,23 +466,28 @@ private constructor( @JvmSynthetic internal fun from(plan: Plan) = apply { - additionalProperties(plan.additionalProperties) + additionalProperties = plan.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Plan = Plan(additionalProperties.toImmutable()) } @@ -490,19 +509,20 @@ private constructor( } /** The subscription the alert applies to. */ - @JsonDeserialize(builder = Subscription.Builder::class) @NoAutoDetect class Subscription + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Subscription = apply { if (!validated) { validated = true @@ -522,23 +542,28 @@ private constructor( @JvmSynthetic internal fun from(subscription: Subscription) = apply { - additionalProperties(subscription.additionalProperties) + additionalProperties = subscription.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Subscription = Subscription(additionalProperties.toImmutable()) } @@ -560,16 +585,17 @@ private constructor( } /** Thresholds are used to define the conditions under which an alert will be triggered. */ - @JsonDeserialize(builder = Threshold.Builder::class) @NoAutoDetect class Threshold + @JsonCreator private constructor( - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The value at which an alert will fire. For credit balance alerts, the alert will fire at * or below this value. For usage and cost alerts, the alert will fire at or above this @@ -588,6 +614,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Threshold = apply { if (!validated) { value() @@ -609,8 +637,8 @@ private constructor( @JvmSynthetic internal fun from(threshold: Threshold) = apply { - this.value = threshold.value - additionalProperties(threshold.additionalProperties) + value = threshold.value + additionalProperties = threshold.additionalProperties.toMutableMap() } /** @@ -625,24 +653,27 @@ private constructor( * at or below this value. For usage and cost alerts, the alert will fire at or above * this value. */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Threshold = Threshold(value, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForCustomerParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForCustomerParams.kt index 5965c62e..e2f067e5 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForCustomerParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForCustomerParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -65,24 +65,26 @@ constructor( } } - @JsonDeserialize(builder = AlertCreateForCustomerBody.Builder::class) @NoAutoDetect class AlertCreateForCustomerBody + @JsonCreator internal constructor( - private val currency: String?, - private val type: Type?, - private val thresholds: List?, - private val additionalProperties: Map, + @JsonProperty("currency") private val currency: String, + @JsonProperty("type") private val type: Type, + @JsonProperty("thresholds") private val thresholds: List?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The case sensitive currency or custom pricing unit to use for this alert. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency /** The type of alert to create. This must be a valid alert type. */ - @JsonProperty("type") fun type(): Type? = type + @JsonProperty("type") fun type(): Type = type /** The thresholds that define the values at which the alert will be triggered. */ - @JsonProperty("thresholds") fun thresholds(): List? = thresholds + @JsonProperty("thresholds") + fun thresholds(): Optional> = Optional.ofNullable(thresholds) @JsonAnyGetter @ExcludeMissing @@ -104,37 +106,41 @@ constructor( @JvmSynthetic internal fun from(alertCreateForCustomerBody: AlertCreateForCustomerBody) = apply { - this.currency = alertCreateForCustomerBody.currency - this.type = alertCreateForCustomerBody.type - this.thresholds = alertCreateForCustomerBody.thresholds - additionalProperties(alertCreateForCustomerBody.additionalProperties) + currency = alertCreateForCustomerBody.currency + type = alertCreateForCustomerBody.type + thresholds = alertCreateForCustomerBody.thresholds?.toMutableList() + additionalProperties = + alertCreateForCustomerBody.additionalProperties.toMutableMap() } /** The case sensitive currency or custom pricing unit to use for this alert. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** The type of alert to create. This must be a valid alert type. */ - @JsonProperty("type") fun type(type: Type) = apply { this.type = type } + fun type(type: Type) = apply { this.type = type } /** The thresholds that define the values at which the alert will be triggered. */ - @JsonProperty("thresholds") fun thresholds(thresholds: List) = apply { this.thresholds = thresholds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AlertCreateForCustomerBody = AlertCreateForCustomerBody( checkNotNull(currency) { "`currency` is required but was not set" }, @@ -417,12 +423,13 @@ constructor( } /** Thresholds are used to define the conditions under which an alert will be triggered. */ - @JsonDeserialize(builder = Threshold.Builder::class) @NoAutoDetect class Threshold + @JsonCreator private constructor( - private val value: Double?, - private val additionalProperties: Map, + @JsonProperty("value") private val value: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -430,7 +437,7 @@ constructor( * or below this value. For usage and cost alerts, the alert will fire at or above this * value. */ - @JsonProperty("value") fun value(): Double? = value + @JsonProperty("value") fun value(): Double = value @JsonAnyGetter @ExcludeMissing @@ -450,8 +457,8 @@ constructor( @JvmSynthetic internal fun from(threshold: Threshold) = apply { - this.value = threshold.value - additionalProperties(threshold.additionalProperties) + value = threshold.value + additionalProperties = threshold.additionalProperties.toMutableMap() } /** @@ -459,22 +466,27 @@ constructor( * at or below this value. For usage and cost alerts, the alert will fire at or above * this value. */ - @JsonProperty("value") fun value(value: Double) = apply { this.value = value } + fun value(value: Double) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Threshold = Threshold( checkNotNull(value) { "`value` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForExternalCustomerParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForExternalCustomerParams.kt index 7dba34ee..f76e2f71 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForExternalCustomerParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForExternalCustomerParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -65,24 +65,26 @@ constructor( } } - @JsonDeserialize(builder = AlertCreateForExternalCustomerBody.Builder::class) @NoAutoDetect class AlertCreateForExternalCustomerBody + @JsonCreator internal constructor( - private val currency: String?, - private val type: Type?, - private val thresholds: List?, - private val additionalProperties: Map, + @JsonProperty("currency") private val currency: String, + @JsonProperty("type") private val type: Type, + @JsonProperty("thresholds") private val thresholds: List?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The case sensitive currency or custom pricing unit to use for this alert. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency /** The type of alert to create. This must be a valid alert type. */ - @JsonProperty("type") fun type(): Type? = type + @JsonProperty("type") fun type(): Type = type /** The thresholds that define the values at which the alert will be triggered. */ - @JsonProperty("thresholds") fun thresholds(): List? = thresholds + @JsonProperty("thresholds") + fun thresholds(): Optional> = Optional.ofNullable(thresholds) @JsonAnyGetter @ExcludeMissing @@ -106,37 +108,41 @@ constructor( internal fun from( alertCreateForExternalCustomerBody: AlertCreateForExternalCustomerBody ) = apply { - this.currency = alertCreateForExternalCustomerBody.currency - this.type = alertCreateForExternalCustomerBody.type - this.thresholds = alertCreateForExternalCustomerBody.thresholds - additionalProperties(alertCreateForExternalCustomerBody.additionalProperties) + currency = alertCreateForExternalCustomerBody.currency + type = alertCreateForExternalCustomerBody.type + thresholds = alertCreateForExternalCustomerBody.thresholds?.toMutableList() + additionalProperties = + alertCreateForExternalCustomerBody.additionalProperties.toMutableMap() } /** The case sensitive currency or custom pricing unit to use for this alert. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** The type of alert to create. This must be a valid alert type. */ - @JsonProperty("type") fun type(type: Type) = apply { this.type = type } + fun type(type: Type) = apply { this.type = type } /** The thresholds that define the values at which the alert will be triggered. */ - @JsonProperty("thresholds") fun thresholds(thresholds: List) = apply { this.thresholds = thresholds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AlertCreateForExternalCustomerBody = AlertCreateForExternalCustomerBody( checkNotNull(currency) { "`currency` is required but was not set" }, @@ -427,12 +433,13 @@ constructor( } /** Thresholds are used to define the conditions under which an alert will be triggered. */ - @JsonDeserialize(builder = Threshold.Builder::class) @NoAutoDetect class Threshold + @JsonCreator private constructor( - private val value: Double?, - private val additionalProperties: Map, + @JsonProperty("value") private val value: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -440,7 +447,7 @@ constructor( * or below this value. For usage and cost alerts, the alert will fire at or above this * value. */ - @JsonProperty("value") fun value(): Double? = value + @JsonProperty("value") fun value(): Double = value @JsonAnyGetter @ExcludeMissing @@ -460,8 +467,8 @@ constructor( @JvmSynthetic internal fun from(threshold: Threshold) = apply { - this.value = threshold.value - additionalProperties(threshold.additionalProperties) + value = threshold.value + additionalProperties = threshold.additionalProperties.toMutableMap() } /** @@ -469,22 +476,27 @@ constructor( * at or below this value. For usage and cost alerts, the alert will fire at or above * this value. */ - @JsonProperty("value") fun value(value: Double) = apply { this.value = value } + fun value(value: Double) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Threshold = Threshold( checkNotNull(value) { "`value` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForSubscriptionParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForSubscriptionParams.kt index 38e71a40..b043feac 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForSubscriptionParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertCreateForSubscriptionParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -65,24 +65,25 @@ constructor( } } - @JsonDeserialize(builder = AlertCreateForSubscriptionBody.Builder::class) @NoAutoDetect class AlertCreateForSubscriptionBody + @JsonCreator internal constructor( - private val thresholds: List?, - private val type: Type?, - private val metricId: String?, - private val additionalProperties: Map, + @JsonProperty("thresholds") private val thresholds: List, + @JsonProperty("type") private val type: Type, + @JsonProperty("metric_id") private val metricId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The thresholds that define the values at which the alert will be triggered. */ - @JsonProperty("thresholds") fun thresholds(): List? = thresholds + @JsonProperty("thresholds") fun thresholds(): List = thresholds /** The type of alert to create. This must be a valid alert type. */ - @JsonProperty("type") fun type(): Type? = type + @JsonProperty("type") fun type(): Type = type /** The metric to track usage for. */ - @JsonProperty("metric_id") fun metricId(): String? = metricId + @JsonProperty("metric_id") fun metricId(): Optional = Optional.ofNullable(metricId) @JsonAnyGetter @ExcludeMissing @@ -105,37 +106,41 @@ constructor( @JvmSynthetic internal fun from(alertCreateForSubscriptionBody: AlertCreateForSubscriptionBody) = apply { - this.thresholds = alertCreateForSubscriptionBody.thresholds - this.type = alertCreateForSubscriptionBody.type - this.metricId = alertCreateForSubscriptionBody.metricId - additionalProperties(alertCreateForSubscriptionBody.additionalProperties) + thresholds = alertCreateForSubscriptionBody.thresholds.toMutableList() + type = alertCreateForSubscriptionBody.type + metricId = alertCreateForSubscriptionBody.metricId + additionalProperties = + alertCreateForSubscriptionBody.additionalProperties.toMutableMap() } /** The thresholds that define the values at which the alert will be triggered. */ - @JsonProperty("thresholds") fun thresholds(thresholds: List) = apply { this.thresholds = thresholds } /** The type of alert to create. This must be a valid alert type. */ - @JsonProperty("type") fun type(type: Type) = apply { this.type = type } + fun type(type: Type) = apply { this.type = type } /** The metric to track usage for. */ - @JsonProperty("metric_id") fun metricId(metricId: String) = apply { this.metricId = metricId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AlertCreateForSubscriptionBody = AlertCreateForSubscriptionBody( checkNotNull(thresholds) { "`thresholds` is required but was not set" } @@ -346,12 +351,13 @@ constructor( } /** Thresholds are used to define the conditions under which an alert will be triggered. */ - @JsonDeserialize(builder = Threshold.Builder::class) @NoAutoDetect class Threshold + @JsonCreator private constructor( - private val value: Double?, - private val additionalProperties: Map, + @JsonProperty("value") private val value: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -359,7 +365,7 @@ constructor( * or below this value. For usage and cost alerts, the alert will fire at or above this * value. */ - @JsonProperty("value") fun value(): Double? = value + @JsonProperty("value") fun value(): Double = value @JsonAnyGetter @ExcludeMissing @@ -379,8 +385,8 @@ constructor( @JvmSynthetic internal fun from(threshold: Threshold) = apply { - this.value = threshold.value - additionalProperties(threshold.additionalProperties) + value = threshold.value + additionalProperties = threshold.additionalProperties.toMutableMap() } /** @@ -388,22 +394,27 @@ constructor( * at or below this value. For usage and cost alerts, the alert will fire at or above * this value. */ - @JsonProperty("value") fun value(value: Double) = apply { this.value = value } + fun value(value: Double) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Threshold = Threshold( checkNotNull(value) { "`value` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertListPage.kt index 6e54cd5c..24b482c4 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.AlertService import java.util.Objects @@ -82,13 +83,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -152,18 +155,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertListPageAsync.kt index 4efbceae..190622b2 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.AlertServiceAsync import java.util.Objects @@ -85,13 +86,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -155,18 +158,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertUpdateParams.kt index 3420df46..64939f67 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/AlertUpdateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects @@ -49,16 +50,17 @@ constructor( } } - @JsonDeserialize(builder = AlertUpdateBody.Builder::class) @NoAutoDetect class AlertUpdateBody + @JsonCreator internal constructor( - private val thresholds: List?, - private val additionalProperties: Map, + @JsonProperty("thresholds") private val thresholds: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The thresholds that define the values at which the alert will be triggered. */ - @JsonProperty("thresholds") fun thresholds(): List? = thresholds + @JsonProperty("thresholds") fun thresholds(): List = thresholds @JsonAnyGetter @ExcludeMissing @@ -78,28 +80,32 @@ constructor( @JvmSynthetic internal fun from(alertUpdateBody: AlertUpdateBody) = apply { - this.thresholds = alertUpdateBody.thresholds - additionalProperties(alertUpdateBody.additionalProperties) + thresholds = alertUpdateBody.thresholds.toMutableList() + additionalProperties = alertUpdateBody.additionalProperties.toMutableMap() } /** The thresholds that define the values at which the alert will be triggered. */ - @JsonProperty("thresholds") fun thresholds(thresholds: List) = apply { this.thresholds = thresholds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AlertUpdateBody = AlertUpdateBody( checkNotNull(thresholds) { "`thresholds` is required but was not set" } @@ -297,12 +303,13 @@ constructor( } /** Thresholds are used to define the conditions under which an alert will be triggered. */ - @JsonDeserialize(builder = Threshold.Builder::class) @NoAutoDetect class Threshold + @JsonCreator private constructor( - private val value: Double?, - private val additionalProperties: Map, + @JsonProperty("value") private val value: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -310,7 +317,7 @@ constructor( * or below this value. For usage and cost alerts, the alert will fire at or above this * value. */ - @JsonProperty("value") fun value(): Double? = value + @JsonProperty("value") fun value(): Double = value @JsonAnyGetter @ExcludeMissing @@ -330,8 +337,8 @@ constructor( @JvmSynthetic internal fun from(threshold: Threshold) = apply { - this.value = threshold.value - additionalProperties(threshold.additionalProperties) + value = threshold.value + additionalProperties = threshold.additionalProperties.toMutableMap() } /** @@ -339,22 +346,27 @@ constructor( * at or below this value. For usage and cost alerts, the alert will fire at or above * this value. */ - @JsonProperty("value") fun value(value: Double) = apply { this.value = value } + fun value(value: Double) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Threshold = Threshold( checkNotNull(value) { "`value` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/AmountDiscount.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/AmountDiscount.kt index 26969bca..1f28e47d 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/AmountDiscount.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/AmountDiscount.kt @@ -6,31 +6,37 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = AmountDiscount.Builder::class) @NoAutoDetect class AmountDiscount +@JsonCreator private constructor( - private val discountType: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -63,6 +69,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscount = apply { if (!validated) { discountType() @@ -90,17 +98,15 @@ private constructor( @JvmSynthetic internal fun from(amountDiscount: AmountDiscount) = apply { - this.discountType = amountDiscount.discountType - this.appliesToPriceIds = amountDiscount.appliesToPriceIds - this.reason = amountDiscount.reason + discountType = amountDiscount.discountType + appliesToPriceIds = amountDiscount.appliesToPriceIds + reason = amountDiscount.reason this.amountDiscount = amountDiscount.amountDiscount - additionalProperties(amountDiscount.additionalProperties) + additionalProperties = amountDiscount.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -116,42 +122,41 @@ private constructor( * List of price_ids that this discount applies to. For plan/plan phase discounts, this can * be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun reason(reason: String) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } /** Only available if discount_type is `amount`. */ fun amountDiscount(amountDiscount: String) = amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscount = AmountDiscount( discountType, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/BillableMetric.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/BillableMetric.kt index 98a0e68c..f663634e 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/BillableMetric.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/BillableMetric.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -22,21 +22,25 @@ import java.util.Optional * The Metric resource represents a calculation of a quantity based on events. Metrics are defined * by the query that transforms raw usage events into meaningful values for your customers. */ -@JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val description: JsonField, - private val status: JsonField, - private val item: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") @ExcludeMissing private val name: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -86,6 +90,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { metadata().validate() @@ -117,13 +123,13 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.metadata = billableMetric.metadata - this.id = billableMetric.id - this.name = billableMetric.name - this.description = billableMetric.description - this.status = billableMetric.status - this.item = billableMetric.item - additionalProperties(billableMetric.additionalProperties) + metadata = billableMetric.metadata + id = billableMetric.id + name = billableMetric.name + description = billableMetric.description + status = billableMetric.status + item = billableMetric.item + additionalProperties = billableMetric.additionalProperties.toMutableMap() } /** @@ -138,30 +144,22 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } /** @@ -176,24 +174,27 @@ private constructor( * line items, billable metrics, and prices and are used for defining external sync behavior * for invoices and tax calculation purposes. */ - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric( metadata, @@ -211,19 +212,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -243,23 +245,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Coupon.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Coupon.kt index baa472c4..f46e0c52 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Coupon.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Coupon.kt @@ -4,6 +4,7 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.core.ObjectCodec @@ -20,6 +21,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -64,22 +66,32 @@ import kotlin.jvm.optionals.getOrNull * at the time of the migration that includes the newly added prices you'd like the coupon to apply * to. */ -@JsonDeserialize(builder = Coupon.Builder::class) @NoAutoDetect class Coupon +@JsonCreator private constructor( - private val id: JsonField, - private val redemptionCode: JsonField, - private val discount: JsonField, - private val timesRedeemed: JsonField, - private val durationInMonths: JsonField, - private val maxRedemptions: JsonField, - private val archivedAt: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("redemption_code") + @ExcludeMissing + private val redemptionCode: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("times_redeemed") + @ExcludeMissing + private val timesRedeemed: JsonField = JsonMissing.of(), + @JsonProperty("duration_in_months") + @ExcludeMissing + private val durationInMonths: JsonField = JsonMissing.of(), + @JsonProperty("max_redemptions") + @ExcludeMissing + private val maxRedemptions: JsonField = JsonMissing.of(), + @JsonProperty("archived_at") + @ExcludeMissing + private val archivedAt: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Also referred to as coupon_id in this documentation. */ fun id(): String = id.getRequired("id") @@ -145,6 +157,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Coupon = apply { if (!validated) { id() @@ -178,44 +192,38 @@ private constructor( @JvmSynthetic internal fun from(coupon: Coupon) = apply { - this.id = coupon.id - this.redemptionCode = coupon.redemptionCode - this.discount = coupon.discount - this.timesRedeemed = coupon.timesRedeemed - this.durationInMonths = coupon.durationInMonths - this.maxRedemptions = coupon.maxRedemptions - this.archivedAt = coupon.archivedAt - additionalProperties(coupon.additionalProperties) + id = coupon.id + redemptionCode = coupon.redemptionCode + discount = coupon.discount + timesRedeemed = coupon.timesRedeemed + durationInMonths = coupon.durationInMonths + maxRedemptions = coupon.maxRedemptions + archivedAt = coupon.archivedAt + additionalProperties = coupon.additionalProperties.toMutableMap() } /** Also referred to as coupon_id in this documentation. */ fun id(id: String) = id(JsonField.of(id)) /** Also referred to as coupon_id in this documentation. */ - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** This string can be used to redeem this coupon for a given subscription. */ fun redemptionCode(redemptionCode: String) = redemptionCode(JsonField.of(redemptionCode)) /** This string can be used to redeem this coupon for a given subscription. */ - @JsonProperty("redemption_code") - @ExcludeMissing fun redemptionCode(redemptionCode: JsonField) = apply { this.redemptionCode = redemptionCode } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } /** The number of times this coupon has been redeemed. */ fun timesRedeemed(timesRedeemed: Long) = timesRedeemed(JsonField.of(timesRedeemed)) /** The number of times this coupon has been redeemed. */ - @JsonProperty("times_redeemed") - @ExcludeMissing fun timesRedeemed(timesRedeemed: JsonField) = apply { this.timesRedeemed = timesRedeemed } @@ -231,8 +239,6 @@ private constructor( * This allows for a coupon's discount to apply for a limited time (determined in months); a * `null` value here means "unlimited time". */ - @JsonProperty("duration_in_months") - @ExcludeMissing fun durationInMonths(durationInMonths: JsonField) = apply { this.durationInMonths = durationInMonths } @@ -247,8 +253,6 @@ private constructor( * The maximum number of redemptions allowed for this coupon before it is exhausted; `null` * here means "unlimited". */ - @JsonProperty("max_redemptions") - @ExcludeMissing fun maxRedemptions(maxRedemptions: JsonField) = apply { this.maxRedemptions = maxRedemptions } @@ -263,26 +267,29 @@ private constructor( * An archived coupon can no longer be redeemed. Active coupons will have a value of null * for `archived_at`; this field will be non-null for archived coupons. */ - @JsonProperty("archived_at") - @ExcludeMissing fun archivedAt(archivedAt: JsonField) = apply { this.archivedAt = archivedAt } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Coupon = Coupon( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponCreateParams.kt index c4125c79..847b5794 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponCreateParams.kt @@ -18,12 +18,12 @@ import com.withorb.api.core.BaseSerializer import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField -import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -70,33 +70,36 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = CouponCreateBody.Builder::class) @NoAutoDetect class CouponCreateBody + @JsonCreator internal constructor( - private val discount: Discount?, - private val redemptionCode: String?, - private val durationInMonths: Long?, - private val maxRedemptions: Long?, - private val additionalProperties: Map, + @JsonProperty("discount") private val discount: Discount, + @JsonProperty("redemption_code") private val redemptionCode: String, + @JsonProperty("duration_in_months") private val durationInMonths: Long?, + @JsonProperty("max_redemptions") private val maxRedemptions: Long?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("discount") fun discount(): Discount? = discount + @JsonProperty("discount") fun discount(): Discount = discount /** This string can be used to redeem this coupon for a given subscription. */ - @JsonProperty("redemption_code") fun redemptionCode(): String? = redemptionCode + @JsonProperty("redemption_code") fun redemptionCode(): String = redemptionCode /** * This allows for a coupon's discount to apply for a limited time (determined in months); a * `null` value here means "unlimited time". */ - @JsonProperty("duration_in_months") fun durationInMonths(): Long? = durationInMonths + @JsonProperty("duration_in_months") + fun durationInMonths(): Optional = Optional.ofNullable(durationInMonths) /** * The maximum number of redemptions allowed for this coupon before it is exhausted;`null` * here means "unlimited". */ - @JsonProperty("max_redemptions") fun maxRedemptions(): Long? = maxRedemptions + @JsonProperty("max_redemptions") + fun maxRedemptions(): Optional = Optional.ofNullable(maxRedemptions) @JsonAnyGetter @ExcludeMissing @@ -119,18 +122,16 @@ constructor( @JvmSynthetic internal fun from(couponCreateBody: CouponCreateBody) = apply { - this.discount = couponCreateBody.discount - this.redemptionCode = couponCreateBody.redemptionCode - this.durationInMonths = couponCreateBody.durationInMonths - this.maxRedemptions = couponCreateBody.maxRedemptions - additionalProperties(couponCreateBody.additionalProperties) + discount = couponCreateBody.discount + redemptionCode = couponCreateBody.redemptionCode + durationInMonths = couponCreateBody.durationInMonths + maxRedemptions = couponCreateBody.maxRedemptions + additionalProperties = couponCreateBody.additionalProperties.toMutableMap() } - @JsonProperty("discount") fun discount(discount: Discount) = apply { this.discount = discount } /** This string can be used to redeem this coupon for a given subscription. */ - @JsonProperty("redemption_code") fun redemptionCode(redemptionCode: String) = apply { this.redemptionCode = redemptionCode } @@ -139,7 +140,6 @@ constructor( * This allows for a coupon's discount to apply for a limited time (determined in * months); a `null` value here means "unlimited time". */ - @JsonProperty("duration_in_months") fun durationInMonths(durationInMonths: Long) = apply { this.durationInMonths = durationInMonths } @@ -148,25 +148,29 @@ constructor( * The maximum number of redemptions allowed for this coupon before it is * exhausted;`null` here means "unlimited". */ - @JsonProperty("max_redemptions") fun maxRedemptions(maxRedemptions: Long) = apply { this.maxRedemptions = maxRedemptions } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CouponCreateBody = CouponCreateBody( checkNotNull(discount) { "`discount` is required but was not set" }, @@ -392,8 +396,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newCouponPercentageDiscount(): Optional = Optional.ofNullable(newCouponPercentageDiscount) @@ -422,17 +424,6 @@ constructor( } } - fun validate(): Discount = apply { - if (!validated) { - if (newCouponPercentageDiscount == null && newCouponAmountDiscount == null) { - throw OrbInvalidDataException("Unknown Discount: $_json") - } - newCouponPercentageDiscount?.validate() - newCouponAmountDiscount?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -487,20 +478,14 @@ constructor( when (discountType) { "percentage" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Discount(newCouponPercentageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Discount(newCouponPercentageDiscount = it, _json = json) + } } "amount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Discount(newCouponAmountDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Discount(newCouponAmountDiscount = it, _json = json) + } } } @@ -526,39 +511,25 @@ constructor( } } - @JsonDeserialize(builder = NewCouponPercentageDiscount.Builder::class) @NoAutoDetect class NewCouponPercentageDiscount + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("discount_type") private val discountType: DiscountType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun discountType(): DiscountType = discountType.getRequired("discount_type") - - fun percentageDiscount(): Double = percentageDiscount.getRequired("percentage_discount") - - @JsonProperty("discount_type") @ExcludeMissing fun _discountType() = discountType + @JsonProperty("discount_type") fun discountType(): DiscountType = discountType @JsonProperty("percentage_discount") - @ExcludeMissing - fun _percentageDiscount() = percentageDiscount + fun percentageDiscount(): Double = percentageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewCouponPercentageDiscount = apply { - if (!validated) { - discountType() - percentageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -568,44 +539,34 @@ constructor( class Builder { - private var discountType: JsonField = JsonMissing.of() - private var percentageDiscount: JsonField = JsonMissing.of() + private var discountType: DiscountType? = null + private var percentageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newCouponPercentageDiscount: NewCouponPercentageDiscount) = apply { - this.discountType = newCouponPercentageDiscount.discountType - this.percentageDiscount = newCouponPercentageDiscount.percentageDiscount - additionalProperties(newCouponPercentageDiscount.additionalProperties) + discountType = newCouponPercentageDiscount.discountType + percentageDiscount = newCouponPercentageDiscount.percentageDiscount + additionalProperties = + newCouponPercentageDiscount.additionalProperties.toMutableMap() } - fun discountType(discountType: DiscountType) = - discountType(JsonField.of(discountType)) - - @JsonProperty("discount_type") - @ExcludeMissing - fun discountType(discountType: JsonField) = apply { + fun discountType(discountType: DiscountType) = apply { this.discountType = discountType } - fun percentageDiscount(percentageDiscount: Double) = - percentageDiscount(JsonField.of(percentageDiscount)) - - @JsonProperty("percentage_discount") - @ExcludeMissing - fun percentageDiscount(percentageDiscount: JsonField) = apply { + fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -613,10 +574,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewCouponPercentageDiscount = NewCouponPercentageDiscount( - discountType, - percentageDiscount, + checkNotNull(discountType) { "`discountType` is required but was not set" }, + checkNotNull(percentageDiscount) { + "`percentageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -690,37 +661,24 @@ constructor( "NewCouponPercentageDiscount{discountType=$discountType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewCouponAmountDiscount.Builder::class) @NoAutoDetect class NewCouponAmountDiscount + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("discount_type") private val discountType: DiscountType, + @JsonProperty("amount_discount") private val amountDiscount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun discountType(): DiscountType = discountType.getRequired("discount_type") - - fun amountDiscount(): String = amountDiscount.getRequired("amount_discount") - - @JsonProperty("discount_type") @ExcludeMissing fun _discountType() = discountType + @JsonProperty("discount_type") fun discountType(): DiscountType = discountType - @JsonProperty("amount_discount") @ExcludeMissing fun _amountDiscount() = amountDiscount + @JsonProperty("amount_discount") fun amountDiscount(): String = amountDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewCouponAmountDiscount = apply { - if (!validated) { - discountType() - amountDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -730,43 +688,33 @@ constructor( class Builder { - private var discountType: JsonField = JsonMissing.of() - private var amountDiscount: JsonField = JsonMissing.of() + private var discountType: DiscountType? = null + private var amountDiscount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newCouponAmountDiscount: NewCouponAmountDiscount) = apply { - this.discountType = newCouponAmountDiscount.discountType - this.amountDiscount = newCouponAmountDiscount.amountDiscount - additionalProperties(newCouponAmountDiscount.additionalProperties) + discountType = newCouponAmountDiscount.discountType + amountDiscount = newCouponAmountDiscount.amountDiscount + additionalProperties = + newCouponAmountDiscount.additionalProperties.toMutableMap() } - fun discountType(discountType: DiscountType) = - discountType(JsonField.of(discountType)) - - @JsonProperty("discount_type") - @ExcludeMissing - fun discountType(discountType: JsonField) = apply { + fun discountType(discountType: DiscountType) = apply { this.discountType = discountType } - fun amountDiscount(amountDiscount: String) = - amountDiscount(JsonField.of(amountDiscount)) - - @JsonProperty("amount_discount") - @ExcludeMissing - fun amountDiscount(amountDiscount: JsonField) = apply { + fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -774,10 +722,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewCouponAmountDiscount = NewCouponAmountDiscount( - discountType, - amountDiscount, + checkNotNull(discountType) { "`discountType` is required but was not set" }, + checkNotNull(amountDiscount) { + "`amountDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponListPage.kt index 4a723d6c..5467ca57 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.CouponService import java.util.Objects @@ -82,13 +83,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -152,18 +155,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponListPageAsync.kt index 86f10ea7..e1e7a44e 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.CouponServiceAsync import java.util.Objects @@ -85,13 +86,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -155,18 +158,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponSubscriptionListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponSubscriptionListPage.kt index 95fb0253..1eda528c 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponSubscriptionListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponSubscriptionListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.coupons.SubscriptionService import java.util.Objects @@ -86,13 +87,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -156,18 +159,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponSubscriptionListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponSubscriptionListPageAsync.kt index 97bd17a0..dcf30ef4 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponSubscriptionListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CouponSubscriptionListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.coupons.SubscriptionServiceAsync import java.util.Objects @@ -89,13 +90,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -159,18 +162,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNote.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNote.kt index 7885be4a..1f9a836f 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNote.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNote.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -23,31 +23,53 @@ import java.util.Optional * The [Credit Note](/guides/invoicing/credit-notes) resource represents a credit that has been * applied to a particular invoice. */ -@JsonDeserialize(builder = CreditNote.Builder::class) @NoAutoDetect class CreditNote +@JsonCreator private constructor( - private val id: JsonField, - private val createdAt: JsonField, - private val voidedAt: JsonField, - private val creditNoteNumber: JsonField, - private val invoiceId: JsonField, - private val memo: JsonField, - private val reason: JsonField, - private val type: JsonField, - private val subtotal: JsonField, - private val total: JsonField, - private val customer: JsonField, - private val creditNotePdf: JsonField, - private val minimumAmountRefunded: JsonField, - private val discounts: JsonField>, - private val maximumAmountAdjustment: JsonField, - private val lineItems: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("voided_at") + @ExcludeMissing + private val voidedAt: JsonField = JsonMissing.of(), + @JsonProperty("credit_note_number") + @ExcludeMissing + private val creditNoteNumber: JsonField = JsonMissing.of(), + @JsonProperty("invoice_id") + @ExcludeMissing + private val invoiceId: JsonField = JsonMissing.of(), + @JsonProperty("memo") @ExcludeMissing private val memo: JsonField = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("type") @ExcludeMissing private val type: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("total") @ExcludeMissing private val total: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("credit_note_pdf") + @ExcludeMissing + private val creditNotePdf: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount_refunded") + @ExcludeMissing + private val minimumAmountRefunded: JsonField = JsonMissing.of(), + @JsonProperty("discounts") + @ExcludeMissing + private val discounts: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount_adjustment") + @ExcludeMissing + private val maximumAmountAdjustment: JsonField = JsonMissing.of(), + @JsonProperty("line_items") + @ExcludeMissing + private val lineItems: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The Orb id of this credit note. */ fun id(): String = id.getRequired("id") @@ -151,6 +173,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditNote = apply { if (!validated) { id() @@ -202,45 +226,41 @@ private constructor( @JvmSynthetic internal fun from(creditNote: CreditNote) = apply { - this.id = creditNote.id - this.createdAt = creditNote.createdAt - this.voidedAt = creditNote.voidedAt - this.creditNoteNumber = creditNote.creditNoteNumber - this.invoiceId = creditNote.invoiceId - this.memo = creditNote.memo - this.reason = creditNote.reason - this.type = creditNote.type - this.subtotal = creditNote.subtotal - this.total = creditNote.total - this.customer = creditNote.customer - this.creditNotePdf = creditNote.creditNotePdf - this.minimumAmountRefunded = creditNote.minimumAmountRefunded - this.discounts = creditNote.discounts - this.maximumAmountAdjustment = creditNote.maximumAmountAdjustment - this.lineItems = creditNote.lineItems - additionalProperties(creditNote.additionalProperties) + id = creditNote.id + createdAt = creditNote.createdAt + voidedAt = creditNote.voidedAt + creditNoteNumber = creditNote.creditNoteNumber + invoiceId = creditNote.invoiceId + memo = creditNote.memo + reason = creditNote.reason + type = creditNote.type + subtotal = creditNote.subtotal + total = creditNote.total + customer = creditNote.customer + creditNotePdf = creditNote.creditNotePdf + minimumAmountRefunded = creditNote.minimumAmountRefunded + discounts = creditNote.discounts + maximumAmountAdjustment = creditNote.maximumAmountAdjustment + lineItems = creditNote.lineItems + additionalProperties = creditNote.additionalProperties.toMutableMap() } /** The Orb id of this credit note. */ fun id(id: String) = id(JsonField.of(id)) /** The Orb id of this credit note. */ - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The creation time of the resource in Orb. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The creation time of the resource in Orb. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** The time at which the credit note was voided in Orb, if applicable. */ fun voidedAt(voidedAt: OffsetDateTime) = voidedAt(JsonField.of(voidedAt)) /** The time at which the credit note was voided in Orb, if applicable. */ - @JsonProperty("voided_at") - @ExcludeMissing fun voidedAt(voidedAt: JsonField) = apply { this.voidedAt = voidedAt } /** The unique identifier for credit notes. */ @@ -248,8 +268,6 @@ private constructor( creditNoteNumber(JsonField.of(creditNoteNumber)) /** The unique identifier for credit notes. */ - @JsonProperty("credit_note_number") - @ExcludeMissing fun creditNoteNumber(creditNoteNumber: JsonField) = apply { this.creditNoteNumber = creditNoteNumber } @@ -258,58 +276,42 @@ private constructor( fun invoiceId(invoiceId: String) = invoiceId(JsonField.of(invoiceId)) /** The id of the invoice resource that this credit note is applied to. */ - @JsonProperty("invoice_id") - @ExcludeMissing fun invoiceId(invoiceId: JsonField) = apply { this.invoiceId = invoiceId } /** An optional memo supplied on the credit note. */ fun memo(memo: String) = memo(JsonField.of(memo)) /** An optional memo supplied on the credit note. */ - @JsonProperty("memo") - @ExcludeMissing fun memo(memo: JsonField) = apply { this.memo = memo } fun reason(reason: Reason) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } /** The total prior to any creditable invoice-level discounts or minimums. */ fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** The total prior to any creditable invoice-level discounts or minimums. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** The total including creditable invoice-level discounts or minimums, and tax. */ fun total(total: String) = total(JsonField.of(total)) /** The total including creditable invoice-level discounts or minimums, and tax. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** A URL to a PDF of the credit note. */ fun creditNotePdf(creditNotePdf: String) = creditNotePdf(JsonField.of(creditNotePdf)) /** A URL to a PDF of the credit note. */ - @JsonProperty("credit_note_pdf") - @ExcludeMissing fun creditNotePdf(creditNotePdf: JsonField) = apply { this.creditNotePdf = creditNotePdf } @@ -319,8 +321,6 @@ private constructor( minimumAmountRefunded(JsonField.of(minimumAmountRefunded)) /** Any credited amount from the applied minimum on the invoice. */ - @JsonProperty("minimum_amount_refunded") - @ExcludeMissing fun minimumAmountRefunded(minimumAmountRefunded: JsonField) = apply { this.minimumAmountRefunded = minimumAmountRefunded } @@ -329,8 +329,6 @@ private constructor( fun discounts(discounts: List) = discounts(JsonField.of(discounts)) /** Any discounts applied on the original invoice. */ - @JsonProperty("discounts") - @ExcludeMissing fun discounts(discounts: JsonField>) = apply { this.discounts = discounts } /** The maximum amount applied on the original invoice */ @@ -338,8 +336,6 @@ private constructor( maximumAmountAdjustment(JsonField.of(maximumAmountAdjustment)) /** The maximum amount applied on the original invoice */ - @JsonProperty("maximum_amount_adjustment") - @ExcludeMissing fun maximumAmountAdjustment(maximumAmountAdjustment: JsonField) = apply { this.maximumAmountAdjustment = maximumAmountAdjustment @@ -349,24 +345,27 @@ private constructor( fun lineItems(lineItems: List) = lineItems(JsonField.of(lineItems)) /** All of the line items associated with this credit note. */ - @JsonProperty("line_items") - @ExcludeMissing fun lineItems(lineItems: JsonField>) = apply { this.lineItems = lineItems } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditNote = CreditNote( id, @@ -389,17 +388,18 @@ private constructor( ) } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -415,6 +415,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -438,40 +440,41 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -498,22 +501,33 @@ private constructor( "Customer{id=$id, externalCustomerId=$externalCustomerId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = LineItem.Builder::class) @NoAutoDetect class LineItem + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val subtotal: JsonField, - private val amount: JsonField, - private val quantity: JsonField, - private val discounts: JsonField>, - private val taxAmounts: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("discounts") + @ExcludeMissing + private val discounts: JsonField> = JsonMissing.of(), + @JsonProperty("tax_amounts") + @ExcludeMissing + private val taxAmounts: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The Orb id of this resource. */ fun id(): String = id.getRequired("id") @@ -561,6 +575,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): LineItem = apply { if (!validated) { id() @@ -594,62 +610,50 @@ private constructor( @JvmSynthetic internal fun from(lineItem: LineItem) = apply { - this.id = lineItem.id - this.name = lineItem.name - this.subtotal = lineItem.subtotal - this.amount = lineItem.amount - this.quantity = lineItem.quantity - this.discounts = lineItem.discounts - this.taxAmounts = lineItem.taxAmounts - additionalProperties(lineItem.additionalProperties) + id = lineItem.id + name = lineItem.name + subtotal = lineItem.subtotal + amount = lineItem.amount + quantity = lineItem.quantity + discounts = lineItem.discounts + taxAmounts = lineItem.taxAmounts + additionalProperties = lineItem.additionalProperties.toMutableMap() } /** The Orb id of this resource. */ fun id(id: String) = id(JsonField.of(id)) /** The Orb id of this resource. */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** The name of the corresponding invoice line item. */ fun name(name: String) = name(JsonField.of(name)) /** The name of the corresponding invoice line item. */ - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } /** The amount of the line item, excluding any line item minimums and discounts. */ fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** The amount of the line item, excluding any line item minimums and discounts. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** The amount of the line item, including any line item minimums and discounts. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount of the line item, including any line item minimums and discounts. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } /** An optional quantity credited. */ fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) /** An optional quantity credited. */ - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } /** Any line item discounts from the invoice's line item. */ fun discounts(discounts: List) = discounts(JsonField.of(discounts)) /** Any line item discounts from the invoice's line item. */ - @JsonProperty("discounts") - @ExcludeMissing fun discounts(discounts: JsonField>) = apply { this.discounts = discounts } @@ -658,26 +662,29 @@ private constructor( fun taxAmounts(taxAmounts: List) = taxAmounts(JsonField.of(taxAmounts)) /** Any tax amounts applied onto the line item. */ - @JsonProperty("tax_amounts") - @ExcludeMissing fun taxAmounts(taxAmounts: JsonField>) = apply { this.taxAmounts = taxAmounts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): LineItem = LineItem( id, @@ -691,18 +698,23 @@ private constructor( ) } - @JsonDeserialize(builder = TaxAmount.Builder::class) @NoAutoDetect class TaxAmount + @JsonCreator private constructor( - private val taxRateDescription: JsonField, - private val taxRatePercentage: JsonField, - private val amount: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_rate_description") + @ExcludeMissing + private val taxRateDescription: JsonField = JsonMissing.of(), + @JsonProperty("tax_rate_percentage") + @ExcludeMissing + private val taxRatePercentage: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The human-readable description of the applied tax rate. */ fun taxRateDescription(): String = taxRateDescription.getRequired("tax_rate_description") @@ -731,6 +743,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TaxAmount = apply { if (!validated) { taxRateDescription() @@ -756,10 +770,10 @@ private constructor( @JvmSynthetic internal fun from(taxAmount: TaxAmount) = apply { - this.taxRateDescription = taxAmount.taxRateDescription - this.taxRatePercentage = taxAmount.taxRatePercentage - this.amount = taxAmount.amount - additionalProperties(taxAmount.additionalProperties) + taxRateDescription = taxAmount.taxRateDescription + taxRatePercentage = taxAmount.taxRatePercentage + amount = taxAmount.amount + additionalProperties = taxAmount.additionalProperties.toMutableMap() } /** The human-readable description of the applied tax rate. */ @@ -767,8 +781,6 @@ private constructor( taxRateDescription(JsonField.of(taxRateDescription)) /** The human-readable description of the applied tax rate. */ - @JsonProperty("tax_rate_description") - @ExcludeMissing fun taxRateDescription(taxRateDescription: JsonField) = apply { this.taxRateDescription = taxRateDescription } @@ -778,8 +790,6 @@ private constructor( taxRatePercentage(JsonField.of(taxRatePercentage)) /** The tax rate percentage, out of 100. */ - @JsonProperty("tax_rate_percentage") - @ExcludeMissing fun taxRatePercentage(taxRatePercentage: JsonField) = apply { this.taxRatePercentage = taxRatePercentage } @@ -788,18 +798,15 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount of additional tax incurred by this tax rate. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -807,6 +814,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TaxAmount = TaxAmount( taxRateDescription, @@ -834,22 +849,35 @@ private constructor( "TaxAmount{taxRateDescription=$taxRateDescription, taxRatePercentage=$taxRatePercentage, amount=$amount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Discount.Builder::class) @NoAutoDetect class Discount + @JsonCreator private constructor( - private val id: JsonField, - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val amountDiscount: JsonField, - private val amountApplied: JsonField, - private val reason: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("amount_applied") + @ExcludeMissing + private val amountApplied: JsonField = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun discountType(): DiscountType = discountType.getRequired("discount_type") @@ -888,6 +916,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Discount = apply { if (!validated) { id() @@ -921,27 +951,23 @@ private constructor( @JvmSynthetic internal fun from(discount: Discount) = apply { - this.id = discount.id - this.discountType = discount.discountType - this.percentageDiscount = discount.percentageDiscount - this.amountDiscount = discount.amountDiscount - this.amountApplied = discount.amountApplied - this.reason = discount.reason - this.appliesToPriceIds = discount.appliesToPriceIds - additionalProperties(discount.additionalProperties) + id = discount.id + discountType = discount.discountType + percentageDiscount = discount.percentageDiscount + amountDiscount = discount.amountDiscount + amountApplied = discount.amountApplied + reason = discount.reason + appliesToPriceIds = discount.appliesToPriceIds + additionalProperties = discount.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -949,8 +975,6 @@ private constructor( fun percentageDiscount(percentageDiscount: Double) = percentageDiscount(JsonField.of(percentageDiscount)) - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -958,8 +982,6 @@ private constructor( fun amountDiscount(amountDiscount: String) = amountDiscount(JsonField.of(amountDiscount)) - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -967,35 +989,28 @@ private constructor( fun amountApplied(amountApplied: String) = amountApplied(JsonField.of(amountApplied)) - @JsonProperty("amount_applied") - @ExcludeMissing fun amountApplied(amountApplied: JsonField) = apply { this.amountApplied = amountApplied } fun reason(reason: String) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun appliesToPriceIds(appliesToPriceIds: List) = appliesToPriceIds(JsonField.of(appliesToPriceIds)) - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1003,6 +1018,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Discount = Discount( id, @@ -1110,20 +1133,29 @@ private constructor( } /** The maximum amount applied on the original invoice */ - @JsonDeserialize(builder = MaximumAmountAdjustment.Builder::class) @NoAutoDetect class MaximumAmountAdjustment + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val amountApplied: JsonField, - private val reason: JsonField, - private val appliesToPrices: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("amount_applied") + @ExcludeMissing + private val amountApplied: JsonField = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_prices") + @ExcludeMissing + private val appliesToPrices: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") fun percentageDiscount(): Double = percentageDiscount.getRequired("percentage_discount") @@ -1151,6 +1183,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAmountAdjustment = apply { if (!validated) { discountType() @@ -1180,18 +1214,16 @@ private constructor( @JvmSynthetic internal fun from(maximumAmountAdjustment: MaximumAmountAdjustment) = apply { - this.discountType = maximumAmountAdjustment.discountType - this.percentageDiscount = maximumAmountAdjustment.percentageDiscount - this.amountApplied = maximumAmountAdjustment.amountApplied - this.reason = maximumAmountAdjustment.reason - this.appliesToPrices = maximumAmountAdjustment.appliesToPrices - additionalProperties(maximumAmountAdjustment.additionalProperties) + discountType = maximumAmountAdjustment.discountType + percentageDiscount = maximumAmountAdjustment.percentageDiscount + amountApplied = maximumAmountAdjustment.amountApplied + reason = maximumAmountAdjustment.reason + appliesToPrices = maximumAmountAdjustment.appliesToPrices + additionalProperties = maximumAmountAdjustment.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -1199,49 +1231,46 @@ private constructor( fun percentageDiscount(percentageDiscount: Double) = percentageDiscount(JsonField.of(percentageDiscount)) - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun amountApplied(amountApplied: String) = amountApplied(JsonField.of(amountApplied)) - @JsonProperty("amount_applied") - @ExcludeMissing fun amountApplied(amountApplied: JsonField) = apply { this.amountApplied = amountApplied } fun reason(reason: String) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun appliesToPrices(appliesToPrices: List) = appliesToPrices(JsonField.of(appliesToPrices)) - @JsonProperty("applies_to_prices") - @ExcludeMissing fun appliesToPrices(appliesToPrices: JsonField>) = apply { this.appliesToPrices = appliesToPrices } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAmountAdjustment = MaximumAmountAdjustment( discountType, @@ -1304,17 +1333,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = AppliesToPrice.Builder::class) @NoAutoDetect class AppliesToPrice + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -1327,6 +1359,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AppliesToPrice = apply { if (!validated) { id() @@ -1350,31 +1384,26 @@ private constructor( @JvmSynthetic internal fun from(appliesToPrice: AppliesToPrice) = apply { - this.id = appliesToPrice.id - this.name = appliesToPrice.name - additionalProperties(appliesToPrice.additionalProperties) + id = appliesToPrice.id + name = appliesToPrice.name + additionalProperties = appliesToPrice.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1382,6 +1411,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AppliesToPrice = AppliesToPrice( id, @@ -1552,20 +1589,29 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = Discount.Builder::class) @NoAutoDetect class Discount + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val amountApplied: JsonField, - private val reason: JsonField, - private val appliesToPrices: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("amount_applied") + @ExcludeMissing + private val amountApplied: JsonField = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_prices") + @ExcludeMissing + private val appliesToPrices: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") fun percentageDiscount(): Double = percentageDiscount.getRequired("percentage_discount") @@ -1593,6 +1639,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Discount = apply { if (!validated) { discountType() @@ -1622,18 +1670,16 @@ private constructor( @JvmSynthetic internal fun from(discount: Discount) = apply { - this.discountType = discount.discountType - this.percentageDiscount = discount.percentageDiscount - this.amountApplied = discount.amountApplied - this.reason = discount.reason - this.appliesToPrices = discount.appliesToPrices - additionalProperties(discount.additionalProperties) + discountType = discount.discountType + percentageDiscount = discount.percentageDiscount + amountApplied = discount.amountApplied + reason = discount.reason + appliesToPrices = discount.appliesToPrices + additionalProperties = discount.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -1641,49 +1687,46 @@ private constructor( fun percentageDiscount(percentageDiscount: Double) = percentageDiscount(JsonField.of(percentageDiscount)) - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun amountApplied(amountApplied: String) = amountApplied(JsonField.of(amountApplied)) - @JsonProperty("amount_applied") - @ExcludeMissing fun amountApplied(amountApplied: JsonField) = apply { this.amountApplied = amountApplied } fun reason(reason: String) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun appliesToPrices(appliesToPrices: List) = appliesToPrices(JsonField.of(appliesToPrices)) - @JsonProperty("applies_to_prices") - @ExcludeMissing fun appliesToPrices(appliesToPrices: JsonField>) = apply { this.appliesToPrices = appliesToPrices } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Discount = Discount( discountType, @@ -1746,17 +1789,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = AppliesToPrice.Builder::class) @NoAutoDetect class AppliesToPrice + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -1769,6 +1815,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AppliesToPrice = apply { if (!validated) { id() @@ -1792,31 +1840,26 @@ private constructor( @JvmSynthetic internal fun from(appliesToPrice: AppliesToPrice) = apply { - this.id = appliesToPrice.id - this.name = appliesToPrice.name - additionalProperties(appliesToPrice.additionalProperties) + id = appliesToPrice.id + name = appliesToPrice.name + additionalProperties = appliesToPrice.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1824,6 +1867,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AppliesToPrice = AppliesToPrice( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteCreateParams.kt index c4f54461..9cd763f1 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteCreateParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -55,23 +55,24 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = CreditNoteCreateBody.Builder::class) @NoAutoDetect class CreditNoteCreateBody + @JsonCreator internal constructor( - private val lineItems: List?, - private val memo: String?, - private val reason: Reason?, - private val additionalProperties: Map, + @JsonProperty("line_items") private val lineItems: List, + @JsonProperty("memo") private val memo: String?, + @JsonProperty("reason") private val reason: Reason?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("line_items") fun lineItems(): List? = lineItems + @JsonProperty("line_items") fun lineItems(): List = lineItems /** An optional memo to attach to the credit note. */ - @JsonProperty("memo") fun memo(): String? = memo + @JsonProperty("memo") fun memo(): Optional = Optional.ofNullable(memo) /** An optional reason for the credit note. */ - @JsonProperty("reason") fun reason(): Reason? = reason + @JsonProperty("reason") fun reason(): Optional = Optional.ofNullable(reason) @JsonAnyGetter @ExcludeMissing @@ -93,35 +94,39 @@ constructor( @JvmSynthetic internal fun from(creditNoteCreateBody: CreditNoteCreateBody) = apply { - this.lineItems = creditNoteCreateBody.lineItems - this.memo = creditNoteCreateBody.memo - this.reason = creditNoteCreateBody.reason - additionalProperties(creditNoteCreateBody.additionalProperties) + lineItems = creditNoteCreateBody.lineItems.toMutableList() + memo = creditNoteCreateBody.memo + reason = creditNoteCreateBody.reason + additionalProperties = creditNoteCreateBody.additionalProperties.toMutableMap() } - @JsonProperty("line_items") fun lineItems(lineItems: List) = apply { this.lineItems = lineItems } /** An optional memo to attach to the credit note. */ - @JsonProperty("memo") fun memo(memo: String) = apply { this.memo = memo } + fun memo(memo: String) = apply { this.memo = memo } /** An optional reason for the credit note. */ - @JsonProperty("reason") fun reason(reason: Reason) = apply { this.reason = reason } + fun reason(reason: Reason) = apply { this.reason = reason } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditNoteCreateBody = CreditNoteCreateBody( checkNotNull(lineItems) { "`lineItems` is required but was not set" } @@ -322,20 +327,21 @@ constructor( ) } - @JsonDeserialize(builder = LineItem.Builder::class) @NoAutoDetect class LineItem + @JsonCreator private constructor( - private val invoiceLineItemId: String?, - private val amount: String?, - private val additionalProperties: Map, + @JsonProperty("invoice_line_item_id") private val invoiceLineItemId: String, + @JsonProperty("amount") private val amount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The ID of the line item to credit. */ - @JsonProperty("invoice_line_item_id") fun invoiceLineItemId(): String? = invoiceLineItemId + @JsonProperty("invoice_line_item_id") fun invoiceLineItemId(): String = invoiceLineItemId /** The total amount in the invoice's currency to credit this line item. */ - @JsonProperty("amount") fun amount(): String? = amount + @JsonProperty("amount") fun amount(): String = amount @JsonAnyGetter @ExcludeMissing @@ -356,34 +362,38 @@ constructor( @JvmSynthetic internal fun from(lineItem: LineItem) = apply { - this.invoiceLineItemId = lineItem.invoiceLineItemId - this.amount = lineItem.amount - additionalProperties(lineItem.additionalProperties) + invoiceLineItemId = lineItem.invoiceLineItemId + amount = lineItem.amount + additionalProperties = lineItem.additionalProperties.toMutableMap() } /** The ID of the line item to credit. */ - @JsonProperty("invoice_line_item_id") fun invoiceLineItemId(invoiceLineItemId: String) = apply { this.invoiceLineItemId = invoiceLineItemId } /** The total amount in the invoice's currency to credit this line item. */ - @JsonProperty("amount") fun amount(amount: String) = apply { this.amount = amount } + fun amount(amount: String) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): LineItem = LineItem( checkNotNull(invoiceLineItemId) { diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteListPage.kt index 09a1b05c..df02c940 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.CreditNoteService import java.util.Objects @@ -86,13 +87,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -156,18 +159,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteListPageAsync.kt index c9a385eb..5706f110 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CreditNoteListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.CreditNoteServiceAsync import java.util.Objects @@ -89,13 +90,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -159,18 +162,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Customer.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Customer.kt index 08c82952..d4ec15b9 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Customer.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Customer.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -37,36 +37,69 @@ import java.util.Optional * timezone. See [Timezone localization](../guides/product-catalog/timezones.md) for information on * what this timezone parameter influences within Orb. */ -@JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val externalCustomerId: JsonField, - private val name: JsonField, - private val email: JsonField, - private val timezone: JsonField, - private val paymentProviderId: JsonField, - private val paymentProvider: JsonField, - private val createdAt: JsonField, - private val shippingAddress: JsonField, - private val billingAddress: JsonField, - private val balance: JsonField, - private val currency: JsonField, - private val taxId: JsonField, - private val autoCollection: JsonField, - private val exemptFromAutomatedTax: JsonField, - private val emailDelivery: JsonField, - private val additionalEmails: JsonField>, - private val portalUrl: JsonField, - private val accountingSyncConfiguration: JsonField, - private val reportingConfiguration: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonProperty("name") @ExcludeMissing private val name: JsonField = JsonMissing.of(), + @JsonProperty("email") @ExcludeMissing private val email: JsonField = JsonMissing.of(), + @JsonProperty("timezone") + @ExcludeMissing + private val timezone: JsonField = JsonMissing.of(), + @JsonProperty("payment_provider_id") + @ExcludeMissing + private val paymentProviderId: JsonField = JsonMissing.of(), + @JsonProperty("payment_provider") + @ExcludeMissing + private val paymentProvider: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("shipping_address") + @ExcludeMissing + private val shippingAddress: JsonField = JsonMissing.of(), + @JsonProperty("billing_address") + @ExcludeMissing + private val billingAddress: JsonField = JsonMissing.of(), + @JsonProperty("balance") + @ExcludeMissing + private val balance: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("tax_id") @ExcludeMissing private val taxId: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("exempt_from_automated_tax") + @ExcludeMissing + private val exemptFromAutomatedTax: JsonField = JsonMissing.of(), + @JsonProperty("email_delivery") + @ExcludeMissing + private val emailDelivery: JsonField = JsonMissing.of(), + @JsonProperty("additional_emails") + @ExcludeMissing + private val additionalEmails: JsonField> = JsonMissing.of(), + @JsonProperty("portal_url") + @ExcludeMissing + private val portalUrl: JsonField = JsonMissing.of(), + @JsonProperty("accounting_sync_configuration") + @ExcludeMissing + private val accountingSyncConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("reporting_configuration") + @ExcludeMissing + private val reportingConfiguration: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -445,6 +478,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { metadata().validate() @@ -507,28 +542,28 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.metadata = customer.metadata - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - this.name = customer.name - this.email = customer.email - this.timezone = customer.timezone - this.paymentProviderId = customer.paymentProviderId - this.paymentProvider = customer.paymentProvider - this.createdAt = customer.createdAt - this.shippingAddress = customer.shippingAddress - this.billingAddress = customer.billingAddress - this.balance = customer.balance - this.currency = customer.currency - this.taxId = customer.taxId - this.autoCollection = customer.autoCollection - this.exemptFromAutomatedTax = customer.exemptFromAutomatedTax - this.emailDelivery = customer.emailDelivery - this.additionalEmails = customer.additionalEmails - this.portalUrl = customer.portalUrl - this.accountingSyncConfiguration = customer.accountingSyncConfiguration - this.reportingConfiguration = customer.reportingConfiguration - additionalProperties(customer.additionalProperties) + metadata = customer.metadata + id = customer.id + externalCustomerId = customer.externalCustomerId + name = customer.name + email = customer.email + timezone = customer.timezone + paymentProviderId = customer.paymentProviderId + paymentProvider = customer.paymentProvider + createdAt = customer.createdAt + shippingAddress = customer.shippingAddress + billingAddress = customer.billingAddress + balance = customer.balance + currency = customer.currency + taxId = customer.taxId + autoCollection = customer.autoCollection + exemptFromAutomatedTax = customer.exemptFromAutomatedTax + emailDelivery = customer.emailDelivery + additionalEmails = customer.additionalEmails + portalUrl = customer.portalUrl + accountingSyncConfiguration = customer.accountingSyncConfiguration + reportingConfiguration = customer.reportingConfiguration + additionalProperties = customer.additionalProperties.toMutableMap() } /** @@ -543,13 +578,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * An optional user-defined ID for this customer resource, used throughout the system as an @@ -564,8 +597,6 @@ private constructor( * alias for this Customer. Use this field to identify a customer by an existing identifier * in your system. */ - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } @@ -574,8 +605,6 @@ private constructor( fun name(name: String) = name(JsonField.of(name)) /** The full name of the customer */ - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } /** @@ -588,8 +617,6 @@ private constructor( * A valid customer email, to be used for notifications. When Orb triggers payment through a * payment gateway, this email will be used for any automatically issued receipts. */ - @JsonProperty("email") - @ExcludeMissing fun email(email: JsonField) = apply { this.email = email } /** @@ -604,8 +631,6 @@ private constructor( * This "defaults to your account's timezone if not set. This cannot be changed after * customer creation. */ - @JsonProperty("timezone") - @ExcludeMissing fun timezone(timezone: JsonField) = apply { this.timezone = timezone } /** @@ -619,8 +644,6 @@ private constructor( * The ID of this customer in an external payments solution, such as Stripe. This is used * for creating charges or invoices in the external system via Orb. */ - @JsonProperty("payment_provider_id") - @ExcludeMissing fun paymentProviderId(paymentProviderId: JsonField) = apply { this.paymentProviderId = paymentProviderId } @@ -636,23 +659,17 @@ private constructor( * This is used for creating charges or invoices in an external system via Orb. When not in * test mode, the connection must first be configured in the Orb webapp. */ - @JsonProperty("payment_provider") - @ExcludeMissing fun paymentProvider(paymentProvider: JsonField) = apply { this.paymentProvider = paymentProvider } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun shippingAddress(shippingAddress: ShippingAddress) = shippingAddress(JsonField.of(shippingAddress)) - @JsonProperty("shipping_address") - @ExcludeMissing fun shippingAddress(shippingAddress: JsonField) = apply { this.shippingAddress = shippingAddress } @@ -660,8 +677,6 @@ private constructor( fun billingAddress(billingAddress: BillingAddress) = billingAddress(JsonField.of(billingAddress)) - @JsonProperty("billing_address") - @ExcludeMissing fun billingAddress(billingAddress: JsonField) = apply { this.billingAddress = billingAddress } @@ -670,14 +685,10 @@ private constructor( fun balance(balance: String) = balance(JsonField.of(balance)) /** The customer's current balance in their currency. */ - @JsonProperty("balance") - @ExcludeMissing fun balance(balance: JsonField) = apply { this.balance = balance } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } /** @@ -894,14 +905,10 @@ private constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonProperty("tax_id") - @ExcludeMissing fun taxId(taxId: JsonField) = apply { this.taxId = taxId } fun autoCollection(autoCollection: Boolean) = autoCollection(JsonField.of(autoCollection)) - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -909,16 +916,12 @@ private constructor( fun exemptFromAutomatedTax(exemptFromAutomatedTax: Boolean) = exemptFromAutomatedTax(JsonField.of(exemptFromAutomatedTax)) - @JsonProperty("exempt_from_automated_tax") - @ExcludeMissing fun exemptFromAutomatedTax(exemptFromAutomatedTax: JsonField) = apply { this.exemptFromAutomatedTax = exemptFromAutomatedTax } fun emailDelivery(emailDelivery: Boolean) = emailDelivery(JsonField.of(emailDelivery)) - @JsonProperty("email_delivery") - @ExcludeMissing fun emailDelivery(emailDelivery: JsonField) = apply { this.emailDelivery = emailDelivery } @@ -926,23 +929,17 @@ private constructor( fun additionalEmails(additionalEmails: List) = additionalEmails(JsonField.of(additionalEmails)) - @JsonProperty("additional_emails") - @ExcludeMissing fun additionalEmails(additionalEmails: JsonField>) = apply { this.additionalEmails = additionalEmails } fun portalUrl(portalUrl: String) = portalUrl(JsonField.of(portalUrl)) - @JsonProperty("portal_url") - @ExcludeMissing fun portalUrl(portalUrl: JsonField) = apply { this.portalUrl = portalUrl } fun accountingSyncConfiguration(accountingSyncConfiguration: AccountingSyncConfiguration) = accountingSyncConfiguration(JsonField.of(accountingSyncConfiguration)) - @JsonProperty("accounting_sync_configuration") - @ExcludeMissing fun accountingSyncConfiguration( accountingSyncConfiguration: JsonField ) = apply { this.accountingSyncConfiguration = accountingSyncConfiguration } @@ -950,8 +947,6 @@ private constructor( fun reportingConfiguration(reportingConfiguration: ReportingConfiguration) = reportingConfiguration(JsonField.of(reportingConfiguration)) - @JsonProperty("reporting_configuration") - @ExcludeMissing fun reportingConfiguration(reportingConfiguration: JsonField) = apply { this.reportingConfiguration = reportingConfiguration @@ -959,18 +954,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( metadata, @@ -998,21 +998,32 @@ private constructor( ) } - @JsonDeserialize(builder = BillingAddress.Builder::class) @NoAutoDetect class BillingAddress + @JsonCreator private constructor( - private val line1: JsonField, - private val line2: JsonField, - private val city: JsonField, - private val state: JsonField, - private val postalCode: JsonField, - private val country: JsonField, - private val additionalProperties: Map, + @JsonProperty("line1") + @ExcludeMissing + private val line1: JsonField = JsonMissing.of(), + @JsonProperty("line2") + @ExcludeMissing + private val line2: JsonField = JsonMissing.of(), + @JsonProperty("city") + @ExcludeMissing + private val city: JsonField = JsonMissing.of(), + @JsonProperty("state") + @ExcludeMissing + private val state: JsonField = JsonMissing.of(), + @JsonProperty("postal_code") + @ExcludeMissing + private val postalCode: JsonField = JsonMissing.of(), + @JsonProperty("country") + @ExcludeMissing + private val country: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun line1(): Optional = Optional.ofNullable(line1.getNullable("line1")) fun line2(): Optional = Optional.ofNullable(line2.getNullable("line2")) @@ -1042,6 +1053,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingAddress = apply { if (!validated) { line1() @@ -1073,65 +1086,58 @@ private constructor( @JvmSynthetic internal fun from(billingAddress: BillingAddress) = apply { - this.line1 = billingAddress.line1 - this.line2 = billingAddress.line2 - this.city = billingAddress.city - this.state = billingAddress.state - this.postalCode = billingAddress.postalCode - this.country = billingAddress.country - additionalProperties(billingAddress.additionalProperties) + line1 = billingAddress.line1 + line2 = billingAddress.line2 + city = billingAddress.city + state = billingAddress.state + postalCode = billingAddress.postalCode + country = billingAddress.country + additionalProperties = billingAddress.additionalProperties.toMutableMap() } fun line1(line1: String) = line1(JsonField.of(line1)) - @JsonProperty("line1") - @ExcludeMissing fun line1(line1: JsonField) = apply { this.line1 = line1 } fun line2(line2: String) = line2(JsonField.of(line2)) - @JsonProperty("line2") - @ExcludeMissing fun line2(line2: JsonField) = apply { this.line2 = line2 } fun city(city: String) = city(JsonField.of(city)) - @JsonProperty("city") - @ExcludeMissing fun city(city: JsonField) = apply { this.city = city } fun state(state: String) = state(JsonField.of(state)) - @JsonProperty("state") - @ExcludeMissing fun state(state: JsonField) = apply { this.state = state } fun postalCode(postalCode: String) = postalCode(JsonField.of(postalCode)) - @JsonProperty("postal_code") - @ExcludeMissing fun postalCode(postalCode: JsonField) = apply { this.postalCode = postalCode } fun country(country: String) = country(JsonField.of(country)) - @JsonProperty("country") - @ExcludeMissing fun country(country: JsonField) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingAddress = BillingAddress( line1, @@ -1167,19 +1173,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -1199,23 +1206,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1311,21 +1323,32 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ShippingAddress.Builder::class) @NoAutoDetect class ShippingAddress + @JsonCreator private constructor( - private val line1: JsonField, - private val line2: JsonField, - private val city: JsonField, - private val state: JsonField, - private val postalCode: JsonField, - private val country: JsonField, - private val additionalProperties: Map, + @JsonProperty("line1") + @ExcludeMissing + private val line1: JsonField = JsonMissing.of(), + @JsonProperty("line2") + @ExcludeMissing + private val line2: JsonField = JsonMissing.of(), + @JsonProperty("city") + @ExcludeMissing + private val city: JsonField = JsonMissing.of(), + @JsonProperty("state") + @ExcludeMissing + private val state: JsonField = JsonMissing.of(), + @JsonProperty("postal_code") + @ExcludeMissing + private val postalCode: JsonField = JsonMissing.of(), + @JsonProperty("country") + @ExcludeMissing + private val country: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun line1(): Optional = Optional.ofNullable(line1.getNullable("line1")) fun line2(): Optional = Optional.ofNullable(line2.getNullable("line2")) @@ -1355,6 +1378,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ShippingAddress = apply { if (!validated) { line1() @@ -1386,65 +1411,58 @@ private constructor( @JvmSynthetic internal fun from(shippingAddress: ShippingAddress) = apply { - this.line1 = shippingAddress.line1 - this.line2 = shippingAddress.line2 - this.city = shippingAddress.city - this.state = shippingAddress.state - this.postalCode = shippingAddress.postalCode - this.country = shippingAddress.country - additionalProperties(shippingAddress.additionalProperties) + line1 = shippingAddress.line1 + line2 = shippingAddress.line2 + city = shippingAddress.city + state = shippingAddress.state + postalCode = shippingAddress.postalCode + country = shippingAddress.country + additionalProperties = shippingAddress.additionalProperties.toMutableMap() } fun line1(line1: String) = line1(JsonField.of(line1)) - @JsonProperty("line1") - @ExcludeMissing fun line1(line1: JsonField) = apply { this.line1 = line1 } fun line2(line2: String) = line2(JsonField.of(line2)) - @JsonProperty("line2") - @ExcludeMissing fun line2(line2: JsonField) = apply { this.line2 = line2 } fun city(city: String) = city(JsonField.of(city)) - @JsonProperty("city") - @ExcludeMissing fun city(city: JsonField) = apply { this.city = city } fun state(state: String) = state(JsonField.of(state)) - @JsonProperty("state") - @ExcludeMissing fun state(state: JsonField) = apply { this.state = state } fun postalCode(postalCode: String) = postalCode(JsonField.of(postalCode)) - @JsonProperty("postal_code") - @ExcludeMissing fun postalCode(postalCode: JsonField) = apply { this.postalCode = postalCode } fun country(country: String) = country(JsonField.of(country)) - @JsonProperty("country") - @ExcludeMissing fun country(country: JsonField) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ShippingAddress = ShippingAddress( line1, @@ -1581,18 +1599,21 @@ private constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonDeserialize(builder = TaxId.Builder::class) @NoAutoDetect class TaxId + @JsonCreator private constructor( - private val country: JsonField, - private val type: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("country") + @ExcludeMissing + private val country: JsonField = JsonMissing.of(), + @JsonProperty("type") @ExcludeMissing private val type: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun country(): Country = country.getRequired("country") fun type(): Type = type.getRequired("type") @@ -1609,6 +1630,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TaxId = apply { if (!validated) { country() @@ -1634,44 +1657,43 @@ private constructor( @JvmSynthetic internal fun from(taxId: TaxId) = apply { - this.country = taxId.country - this.type = taxId.type - this.value = taxId.value - additionalProperties(taxId.additionalProperties) + country = taxId.country + type = taxId.type + value = taxId.value + additionalProperties = taxId.additionalProperties.toMutableMap() } fun country(country: Country) = country(JsonField.of(country)) - @JsonProperty("country") - @ExcludeMissing fun country(country: JsonField) = apply { this.country = country } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun value(value: String) = value(JsonField.of(value)) - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TaxId = TaxId( country, @@ -2683,17 +2705,20 @@ private constructor( "TaxId{country=$country, type=$type, value=$value, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AccountingSyncConfiguration.Builder::class) @NoAutoDetect class AccountingSyncConfiguration + @JsonCreator private constructor( - private val excluded: JsonField, - private val accountingProviders: JsonField>, - private val additionalProperties: Map, + @JsonProperty("excluded") + @ExcludeMissing + private val excluded: JsonField = JsonMissing.of(), + @JsonProperty("accounting_providers") + @ExcludeMissing + private val accountingProviders: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun excluded(): Boolean = excluded.getRequired("excluded") fun accountingProviders(): List = @@ -2709,6 +2734,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AccountingSyncConfiguration = apply { if (!validated) { excluded() @@ -2732,22 +2759,19 @@ private constructor( @JvmSynthetic internal fun from(accountingSyncConfiguration: AccountingSyncConfiguration) = apply { - this.excluded = accountingSyncConfiguration.excluded - this.accountingProviders = accountingSyncConfiguration.accountingProviders - additionalProperties(accountingSyncConfiguration.additionalProperties) + excluded = accountingSyncConfiguration.excluded + accountingProviders = accountingSyncConfiguration.accountingProviders + additionalProperties = + accountingSyncConfiguration.additionalProperties.toMutableMap() } fun excluded(excluded: Boolean) = excluded(JsonField.of(excluded)) - @JsonProperty("excluded") - @ExcludeMissing fun excluded(excluded: JsonField) = apply { this.excluded = excluded } fun accountingProviders(accountingProviders: List) = accountingProviders(JsonField.of(accountingProviders)) - @JsonProperty("accounting_providers") - @ExcludeMissing fun accountingProviders(accountingProviders: JsonField>) = apply { this.accountingProviders = accountingProviders @@ -2755,18 +2779,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AccountingSyncConfiguration = AccountingSyncConfiguration( excluded, @@ -2775,17 +2804,20 @@ private constructor( ) } - @JsonDeserialize(builder = AccountingProvider.Builder::class) @NoAutoDetect class AccountingProvider + @JsonCreator private constructor( - private val providerType: JsonField, - private val externalProviderId: JsonField, - private val additionalProperties: Map, + @JsonProperty("provider_type") + @ExcludeMissing + private val providerType: JsonField = JsonMissing.of(), + @JsonProperty("external_provider_id") + @ExcludeMissing + private val externalProviderId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun providerType(): ProviderType = providerType.getRequired("provider_type") fun externalProviderId(): Optional = @@ -2801,6 +2833,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AccountingProvider = apply { if (!validated) { providerType() @@ -2824,16 +2858,14 @@ private constructor( @JvmSynthetic internal fun from(accountingProvider: AccountingProvider) = apply { - this.providerType = accountingProvider.providerType - this.externalProviderId = accountingProvider.externalProviderId - additionalProperties(accountingProvider.additionalProperties) + providerType = accountingProvider.providerType + externalProviderId = accountingProvider.externalProviderId + additionalProperties = accountingProvider.additionalProperties.toMutableMap() } fun providerType(providerType: ProviderType) = providerType(JsonField.of(providerType)) - @JsonProperty("provider_type") - @ExcludeMissing fun providerType(providerType: JsonField) = apply { this.providerType = providerType } @@ -2841,20 +2873,17 @@ private constructor( fun externalProviderId(externalProviderId: String) = externalProviderId(JsonField.of(externalProviderId)) - @JsonProperty("external_provider_id") - @ExcludeMissing fun externalProviderId(externalProviderId: JsonField) = apply { this.externalProviderId = externalProviderId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2862,6 +2891,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AccountingProvider = AccountingProvider( providerType, @@ -2963,16 +3000,17 @@ private constructor( "AccountingSyncConfiguration{excluded=$excluded, accountingProviders=$accountingProviders, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ReportingConfiguration.Builder::class) @NoAutoDetect class ReportingConfiguration + @JsonCreator private constructor( - private val exempt: JsonField, - private val additionalProperties: Map, + @JsonProperty("exempt") + @ExcludeMissing + private val exempt: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun exempt(): Boolean = exempt.getRequired("exempt") @JsonProperty("exempt") @ExcludeMissing fun _exempt() = exempt @@ -2981,6 +3019,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ReportingConfiguration = apply { if (!validated) { exempt() @@ -3002,30 +3042,33 @@ private constructor( @JvmSynthetic internal fun from(reportingConfiguration: ReportingConfiguration) = apply { - this.exempt = reportingConfiguration.exempt - additionalProperties(reportingConfiguration.additionalProperties) + exempt = reportingConfiguration.exempt + additionalProperties = reportingConfiguration.additionalProperties.toMutableMap() } fun exempt(exempt: Boolean) = exempt(JsonField.of(exempt)) - @JsonProperty("exempt") - @ExcludeMissing fun exempt(exempt: JsonField) = apply { this.exempt = exempt } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ReportingConfiguration = ReportingConfiguration(exempt, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateParams.kt index 35f3abe9..bc281f4e 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -65,22 +65,24 @@ constructor( } } - @JsonDeserialize(builder = CustomerBalanceTransactionCreateBody.Builder::class) @NoAutoDetect class CustomerBalanceTransactionCreateBody + @JsonCreator internal constructor( - private val amount: String?, - private val type: Type?, - private val description: String?, - private val additionalProperties: Map, + @JsonProperty("amount") private val amount: String, + @JsonProperty("type") private val type: Type, + @JsonProperty("description") private val description: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("amount") fun amount(): String? = amount + @JsonProperty("amount") fun amount(): String = amount - @JsonProperty("type") fun type(): Type? = type + @JsonProperty("type") fun type(): Type = type /** An optional description that can be specified around this entry. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) @JsonAnyGetter @ExcludeMissing @@ -104,34 +106,39 @@ constructor( internal fun from( customerBalanceTransactionCreateBody: CustomerBalanceTransactionCreateBody ) = apply { - this.amount = customerBalanceTransactionCreateBody.amount - this.type = customerBalanceTransactionCreateBody.type - this.description = customerBalanceTransactionCreateBody.description - additionalProperties(customerBalanceTransactionCreateBody.additionalProperties) + amount = customerBalanceTransactionCreateBody.amount + type = customerBalanceTransactionCreateBody.type + description = customerBalanceTransactionCreateBody.description + additionalProperties = + customerBalanceTransactionCreateBody.additionalProperties.toMutableMap() } - @JsonProperty("amount") fun amount(amount: String) = apply { this.amount = amount } + fun amount(amount: String) = apply { this.amount = amount } - @JsonProperty("type") fun type(type: Type) = apply { this.type = type } + fun type(type: Type) = apply { this.type = type } /** An optional description that can be specified around this entry. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerBalanceTransactionCreateBody = CustomerBalanceTransactionCreateBody( checkNotNull(amount) { "`amount` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateResponse.kt index e6e4db3f..ccf83dca 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateResponse.kt @@ -6,38 +6,52 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerBalanceTransactionCreateResponse.Builder::class) @NoAutoDetect class CustomerBalanceTransactionCreateResponse +@JsonCreator private constructor( - private val id: JsonField, - private val createdAt: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val action: JsonField, - private val description: JsonField, - private val invoice: JsonField, - private val type: JsonField, - private val creditNote: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("action") + @ExcludeMissing + private val action: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("invoice") + @ExcludeMissing + private val invoice: JsonField = JsonMissing.of(), + @JsonProperty("type") @ExcludeMissing private val type: JsonField = JsonMissing.of(), + @JsonProperty("credit_note") + @ExcludeMissing + private val creditNote: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** A unique id for this transaction. */ fun id(): String = id.getRequired("id") @@ -106,6 +120,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerBalanceTransactionCreateResponse = apply { if (!validated) { id() @@ -147,31 +163,30 @@ private constructor( internal fun from( customerBalanceTransactionCreateResponse: CustomerBalanceTransactionCreateResponse ) = apply { - this.id = customerBalanceTransactionCreateResponse.id - this.createdAt = customerBalanceTransactionCreateResponse.createdAt - this.startingBalance = customerBalanceTransactionCreateResponse.startingBalance - this.endingBalance = customerBalanceTransactionCreateResponse.endingBalance - this.amount = customerBalanceTransactionCreateResponse.amount - this.action = customerBalanceTransactionCreateResponse.action - this.description = customerBalanceTransactionCreateResponse.description - this.invoice = customerBalanceTransactionCreateResponse.invoice - this.type = customerBalanceTransactionCreateResponse.type - this.creditNote = customerBalanceTransactionCreateResponse.creditNote - additionalProperties(customerBalanceTransactionCreateResponse.additionalProperties) + id = customerBalanceTransactionCreateResponse.id + createdAt = customerBalanceTransactionCreateResponse.createdAt + startingBalance = customerBalanceTransactionCreateResponse.startingBalance + endingBalance = customerBalanceTransactionCreateResponse.endingBalance + amount = customerBalanceTransactionCreateResponse.amount + action = customerBalanceTransactionCreateResponse.action + description = customerBalanceTransactionCreateResponse.description + invoice = customerBalanceTransactionCreateResponse.invoice + type = customerBalanceTransactionCreateResponse.type + creditNote = customerBalanceTransactionCreateResponse.creditNote + additionalProperties = + customerBalanceTransactionCreateResponse.additionalProperties.toMutableMap() } /** A unique id for this transaction. */ fun id(id: String) = id(JsonField.of(id)) /** A unique id for this transaction. */ - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The creation time of this transaction. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The creation time of this transaction. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -185,8 +200,6 @@ private constructor( * The original value of the customer's balance prior to the transaction, in the customer's * currency. */ - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } @@ -201,8 +214,6 @@ private constructor( * The new value of the customer's balance prior to the transaction, in the customer's * currency. */ - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } @@ -211,56 +222,49 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The value of the amount changed in the transaction. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun action(action: Action) = action(JsonField.of(action)) - @JsonProperty("action") - @ExcludeMissing fun action(action: JsonField) = apply { this.action = action } /** An optional description provided for manual customer balance adjustments. */ fun description(description: String) = description(JsonField.of(description)) /** An optional description provided for manual customer balance adjustments. */ - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun invoice(invoice: Invoice) = invoice(JsonField.of(invoice)) - @JsonProperty("invoice") - @ExcludeMissing fun invoice(invoice: JsonField) = apply { this.invoice = invoice } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun creditNote(creditNote: CreditNote) = creditNote(JsonField.of(creditNote)) - @JsonProperty("credit_note") - @ExcludeMissing fun creditNote(creditNote: JsonField) = apply { this.creditNote = creditNote } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerBalanceTransactionCreateResponse = CustomerBalanceTransactionCreateResponse( id, @@ -370,16 +374,15 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditNote.Builder::class) @NoAutoDetect class CreditNote + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The id of the Credit note */ fun id(): String = id.getRequired("id") @@ -390,6 +393,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditNote = apply { if (!validated) { id() @@ -411,32 +416,35 @@ private constructor( @JvmSynthetic internal fun from(creditNote: CreditNote) = apply { - this.id = creditNote.id - additionalProperties(creditNote.additionalProperties) + id = creditNote.id + additionalProperties = creditNote.additionalProperties.toMutableMap() } /** The id of the Credit note */ fun id(id: String) = id(JsonField.of(id)) /** The id of the Credit note */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditNote = CreditNote(id, additionalProperties.toImmutable()) } @@ -457,16 +465,15 @@ private constructor( override fun toString() = "CreditNote{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Invoice.Builder::class) @NoAutoDetect class Invoice + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The Invoice id */ fun id(): String = id.getRequired("id") @@ -477,6 +484,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Invoice = apply { if (!validated) { id() @@ -498,32 +507,35 @@ private constructor( @JvmSynthetic internal fun from(invoice: Invoice) = apply { - this.id = invoice.id - additionalProperties(invoice.additionalProperties) + id = invoice.id + additionalProperties = invoice.additionalProperties.toMutableMap() } /** The Invoice id */ fun id(id: String) = id(JsonField.of(id)) /** The Invoice id */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Invoice = Invoice(id, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListPage.kt index cc3ddf04..3554ea79 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.customers.BalanceTransactionService import java.util.Objects @@ -86,13 +87,17 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = + JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -159,7 +164,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -167,12 +171,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListPageAsync.kt index 1f198339..bfd8b83c 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.customers.BalanceTransactionServiceAsync import java.util.Objects @@ -89,13 +90,17 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = + JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -162,7 +167,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -170,12 +174,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListResponse.kt index 777f95af..d283801e 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerBalanceTransactionListResponse.kt @@ -6,38 +6,52 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerBalanceTransactionListResponse.Builder::class) @NoAutoDetect class CustomerBalanceTransactionListResponse +@JsonCreator private constructor( - private val id: JsonField, - private val createdAt: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val action: JsonField, - private val description: JsonField, - private val invoice: JsonField, - private val type: JsonField, - private val creditNote: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("action") + @ExcludeMissing + private val action: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("invoice") + @ExcludeMissing + private val invoice: JsonField = JsonMissing.of(), + @JsonProperty("type") @ExcludeMissing private val type: JsonField = JsonMissing.of(), + @JsonProperty("credit_note") + @ExcludeMissing + private val creditNote: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** A unique id for this transaction. */ fun id(): String = id.getRequired("id") @@ -106,6 +120,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerBalanceTransactionListResponse = apply { if (!validated) { id() @@ -147,31 +163,30 @@ private constructor( internal fun from( customerBalanceTransactionListResponse: CustomerBalanceTransactionListResponse ) = apply { - this.id = customerBalanceTransactionListResponse.id - this.createdAt = customerBalanceTransactionListResponse.createdAt - this.startingBalance = customerBalanceTransactionListResponse.startingBalance - this.endingBalance = customerBalanceTransactionListResponse.endingBalance - this.amount = customerBalanceTransactionListResponse.amount - this.action = customerBalanceTransactionListResponse.action - this.description = customerBalanceTransactionListResponse.description - this.invoice = customerBalanceTransactionListResponse.invoice - this.type = customerBalanceTransactionListResponse.type - this.creditNote = customerBalanceTransactionListResponse.creditNote - additionalProperties(customerBalanceTransactionListResponse.additionalProperties) + id = customerBalanceTransactionListResponse.id + createdAt = customerBalanceTransactionListResponse.createdAt + startingBalance = customerBalanceTransactionListResponse.startingBalance + endingBalance = customerBalanceTransactionListResponse.endingBalance + amount = customerBalanceTransactionListResponse.amount + action = customerBalanceTransactionListResponse.action + description = customerBalanceTransactionListResponse.description + invoice = customerBalanceTransactionListResponse.invoice + type = customerBalanceTransactionListResponse.type + creditNote = customerBalanceTransactionListResponse.creditNote + additionalProperties = + customerBalanceTransactionListResponse.additionalProperties.toMutableMap() } /** A unique id for this transaction. */ fun id(id: String) = id(JsonField.of(id)) /** A unique id for this transaction. */ - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The creation time of this transaction. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The creation time of this transaction. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -185,8 +200,6 @@ private constructor( * The original value of the customer's balance prior to the transaction, in the customer's * currency. */ - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } @@ -201,8 +214,6 @@ private constructor( * The new value of the customer's balance prior to the transaction, in the customer's * currency. */ - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } @@ -211,56 +222,49 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The value of the amount changed in the transaction. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun action(action: Action) = action(JsonField.of(action)) - @JsonProperty("action") - @ExcludeMissing fun action(action: JsonField) = apply { this.action = action } /** An optional description provided for manual customer balance adjustments. */ fun description(description: String) = description(JsonField.of(description)) /** An optional description provided for manual customer balance adjustments. */ - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun invoice(invoice: Invoice) = invoice(JsonField.of(invoice)) - @JsonProperty("invoice") - @ExcludeMissing fun invoice(invoice: JsonField) = apply { this.invoice = invoice } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun creditNote(creditNote: CreditNote) = creditNote(JsonField.of(creditNote)) - @JsonProperty("credit_note") - @ExcludeMissing fun creditNote(creditNote: JsonField) = apply { this.creditNote = creditNote } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerBalanceTransactionListResponse = CustomerBalanceTransactionListResponse( id, @@ -370,16 +374,15 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditNote.Builder::class) @NoAutoDetect class CreditNote + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The id of the Credit note */ fun id(): String = id.getRequired("id") @@ -390,6 +393,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditNote = apply { if (!validated) { id() @@ -411,32 +416,35 @@ private constructor( @JvmSynthetic internal fun from(creditNote: CreditNote) = apply { - this.id = creditNote.id - additionalProperties(creditNote.additionalProperties) + id = creditNote.id + additionalProperties = creditNote.additionalProperties.toMutableMap() } /** The id of the Credit note */ fun id(id: String) = id(JsonField.of(id)) /** The id of the Credit note */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditNote = CreditNote(id, additionalProperties.toImmutable()) } @@ -457,16 +465,15 @@ private constructor( override fun toString() = "CreditNote{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Invoice.Builder::class) @NoAutoDetect class Invoice + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The Invoice id */ fun id(): String = id.getRequired("id") @@ -477,6 +484,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Invoice = apply { if (!validated) { id() @@ -498,32 +507,35 @@ private constructor( @JvmSynthetic internal fun from(invoice: Invoice) = apply { - this.id = invoice.id - additionalProperties(invoice.additionalProperties) + id = invoice.id + additionalProperties = invoice.additionalProperties.toMutableMap() } /** The Invoice id */ fun id(id: String) = id(JsonField.of(id)) /** The Invoice id */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Invoice = Invoice(id, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCostListByExternalIdResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCostListByExternalIdResponse.kt index 678bc518..fa176933 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCostListByExternalIdResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCostListByExternalIdResponse.kt @@ -4,28 +4,29 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerCostListByExternalIdResponse.Builder::class) @NoAutoDetect class CustomerCostListByExternalIdResponse +@JsonCreator private constructor( - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun data(): List = data.getRequired("data") @JsonProperty("data") @ExcludeMissing fun _data() = data @@ -34,6 +35,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerCostListByExternalIdResponse = apply { if (!validated) { data().forEach { it.validate() } @@ -57,30 +60,34 @@ private constructor( internal fun from( customerCostListByExternalIdResponse: CustomerCostListByExternalIdResponse ) = apply { - this.data = customerCostListByExternalIdResponse.data - additionalProperties(customerCostListByExternalIdResponse.additionalProperties) + data = customerCostListByExternalIdResponse.data + additionalProperties = + customerCostListByExternalIdResponse.additionalProperties.toMutableMap() } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCostListByExternalIdResponse = CustomerCostListByExternalIdResponse( data.map { it.toImmutable() }, @@ -88,20 +95,29 @@ private constructor( ) } - @JsonDeserialize(builder = Data.Builder::class) @NoAutoDetect class Data + @JsonCreator private constructor( - private val subtotal: JsonField, - private val total: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val perPriceCosts: JsonField>, - private val additionalProperties: Map, + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("total") + @ExcludeMissing + private val total: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonProperty("per_price_costs") + @ExcludeMissing + private val perPriceCosts: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Total costs for the timeframe, excluding any minimums and discounts. */ fun subtotal(): String = subtotal.getRequired("subtotal") @@ -130,6 +146,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Data = apply { if (!validated) { subtotal() @@ -159,35 +177,29 @@ private constructor( @JvmSynthetic internal fun from(data: Data) = apply { - this.subtotal = data.subtotal - this.total = data.total - this.timeframeStart = data.timeframeStart - this.timeframeEnd = data.timeframeEnd - this.perPriceCosts = data.perPriceCosts - additionalProperties(data.additionalProperties) + subtotal = data.subtotal + total = data.total + timeframeStart = data.timeframeStart + timeframeEnd = data.timeframeEnd + perPriceCosts = data.perPriceCosts + additionalProperties = data.additionalProperties.toMutableMap() } /** Total costs for the timeframe, excluding any minimums and discounts. */ fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** Total costs for the timeframe, excluding any minimums and discounts. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** Total costs for the timeframe, including any minimums and discounts. */ fun total(total: String) = total(JsonField.of(total)) /** Total costs for the timeframe, including any minimums and discounts. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } @@ -195,8 +207,6 @@ private constructor( fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } @@ -204,26 +214,29 @@ private constructor( fun perPriceCosts(perPriceCosts: List) = perPriceCosts(JsonField.of(perPriceCosts)) - @JsonProperty("per_price_costs") - @ExcludeMissing fun perPriceCosts(perPriceCosts: JsonField>) = apply { this.perPriceCosts = perPriceCosts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Data = Data( subtotal, @@ -235,19 +248,26 @@ private constructor( ) } - @JsonDeserialize(builder = PerPriceCost.Builder::class) @NoAutoDetect class PerPriceCost + @JsonCreator private constructor( - private val quantity: JsonField, - private val subtotal: JsonField, - private val total: JsonField, - private val price: JsonField, - private val additionalProperties: Map, + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("total") + @ExcludeMissing + private val total: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The price's quantity for the timeframe */ fun quantity(): Optional = Optional.ofNullable(quantity.getNullable("quantity")) @@ -730,6 +750,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PerPriceCost = apply { if (!validated) { quantity() @@ -757,19 +779,17 @@ private constructor( @JvmSynthetic internal fun from(perPriceCost: PerPriceCost) = apply { - this.quantity = perPriceCost.quantity - this.subtotal = perPriceCost.subtotal - this.total = perPriceCost.total - this.price = perPriceCost.price - additionalProperties(perPriceCost.additionalProperties) + quantity = perPriceCost.quantity + subtotal = perPriceCost.subtotal + total = perPriceCost.total + price = perPriceCost.price + additionalProperties = perPriceCost.additionalProperties.toMutableMap() } /** The price's quantity for the timeframe */ fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) /** The price's quantity for the timeframe */ - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } /** @@ -780,16 +800,12 @@ private constructor( /** * Price's contributions for the timeframe, excluding any minimums and discounts. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** Price's contributions for the timeframe, including minimums and discounts. */ fun total(total: String) = total(JsonField.of(total)) /** Price's contributions for the timeframe, including minimums and discounts. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } /** @@ -1258,18 +1274,15 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1277,6 +1290,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PerPriceCost = PerPriceCost( quantity, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCostListResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCostListResponse.kt index cdb93c2c..d5a65c63 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCostListResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCostListResponse.kt @@ -4,28 +4,29 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerCostListResponse.Builder::class) @NoAutoDetect class CustomerCostListResponse +@JsonCreator private constructor( - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun data(): List = data.getRequired("data") @JsonProperty("data") @ExcludeMissing fun _data() = data @@ -34,6 +35,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerCostListResponse = apply { if (!validated) { data().forEach { it.validate() } @@ -55,30 +58,33 @@ private constructor( @JvmSynthetic internal fun from(customerCostListResponse: CustomerCostListResponse) = apply { - this.data = customerCostListResponse.data - additionalProperties(customerCostListResponse.additionalProperties) + data = customerCostListResponse.data + additionalProperties = customerCostListResponse.additionalProperties.toMutableMap() } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCostListResponse = CustomerCostListResponse( data.map { it.toImmutable() }, @@ -86,20 +92,29 @@ private constructor( ) } - @JsonDeserialize(builder = Data.Builder::class) @NoAutoDetect class Data + @JsonCreator private constructor( - private val subtotal: JsonField, - private val total: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val perPriceCosts: JsonField>, - private val additionalProperties: Map, + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("total") + @ExcludeMissing + private val total: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonProperty("per_price_costs") + @ExcludeMissing + private val perPriceCosts: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Total costs for the timeframe, excluding any minimums and discounts. */ fun subtotal(): String = subtotal.getRequired("subtotal") @@ -128,6 +143,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Data = apply { if (!validated) { subtotal() @@ -157,35 +174,29 @@ private constructor( @JvmSynthetic internal fun from(data: Data) = apply { - this.subtotal = data.subtotal - this.total = data.total - this.timeframeStart = data.timeframeStart - this.timeframeEnd = data.timeframeEnd - this.perPriceCosts = data.perPriceCosts - additionalProperties(data.additionalProperties) + subtotal = data.subtotal + total = data.total + timeframeStart = data.timeframeStart + timeframeEnd = data.timeframeEnd + perPriceCosts = data.perPriceCosts + additionalProperties = data.additionalProperties.toMutableMap() } /** Total costs for the timeframe, excluding any minimums and discounts. */ fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** Total costs for the timeframe, excluding any minimums and discounts. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** Total costs for the timeframe, including any minimums and discounts. */ fun total(total: String) = total(JsonField.of(total)) /** Total costs for the timeframe, including any minimums and discounts. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } @@ -193,8 +204,6 @@ private constructor( fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } @@ -202,26 +211,29 @@ private constructor( fun perPriceCosts(perPriceCosts: List) = perPriceCosts(JsonField.of(perPriceCosts)) - @JsonProperty("per_price_costs") - @ExcludeMissing fun perPriceCosts(perPriceCosts: JsonField>) = apply { this.perPriceCosts = perPriceCosts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Data = Data( subtotal, @@ -233,19 +245,26 @@ private constructor( ) } - @JsonDeserialize(builder = PerPriceCost.Builder::class) @NoAutoDetect class PerPriceCost + @JsonCreator private constructor( - private val quantity: JsonField, - private val subtotal: JsonField, - private val total: JsonField, - private val price: JsonField, - private val additionalProperties: Map, + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("total") + @ExcludeMissing + private val total: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The price's quantity for the timeframe */ fun quantity(): Optional = Optional.ofNullable(quantity.getNullable("quantity")) @@ -728,6 +747,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PerPriceCost = apply { if (!validated) { quantity() @@ -755,19 +776,17 @@ private constructor( @JvmSynthetic internal fun from(perPriceCost: PerPriceCost) = apply { - this.quantity = perPriceCost.quantity - this.subtotal = perPriceCost.subtotal - this.total = perPriceCost.total - this.price = perPriceCost.price - additionalProperties(perPriceCost.additionalProperties) + quantity = perPriceCost.quantity + subtotal = perPriceCost.subtotal + total = perPriceCost.total + price = perPriceCost.price + additionalProperties = perPriceCost.additionalProperties.toMutableMap() } /** The price's quantity for the timeframe */ fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) /** The price's quantity for the timeframe */ - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } /** @@ -778,16 +797,12 @@ private constructor( /** * Price's contributions for the timeframe, excluding any minimums and discounts. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** Price's contributions for the timeframe, including minimums and discounts. */ fun total(total: String) = total(JsonField.of(total)) /** Price's contributions for the timeframe, including minimums and discounts. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } /** @@ -1256,18 +1271,15 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1275,6 +1287,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PerPriceCost = PerPriceCost( quantity, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreateParams.kt index ad37443a..09245d28 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreateParams.kt @@ -18,12 +18,12 @@ import com.withorb.api.core.BaseSerializer import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField -import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -124,99 +124,111 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = CustomerCreateBody.Builder::class) @NoAutoDetect class CustomerCreateBody + @JsonCreator internal constructor( - private val email: String?, - private val name: String?, + @JsonProperty("email") private val email: String, + @JsonProperty("name") private val name: String, + @JsonProperty("accounting_sync_configuration") private val accountingSyncConfiguration: AccountingSyncConfiguration?, - private val additionalEmails: List?, - private val autoCollection: Boolean?, - private val billingAddress: BillingAddress?, - private val currency: String?, - private val emailDelivery: Boolean?, - private val externalCustomerId: String?, - private val metadata: Metadata?, - private val paymentProvider: PaymentProvider?, - private val paymentProviderId: String?, + @JsonProperty("additional_emails") private val additionalEmails: List?, + @JsonProperty("auto_collection") private val autoCollection: Boolean?, + @JsonProperty("billing_address") private val billingAddress: BillingAddress?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("email_delivery") private val emailDelivery: Boolean?, + @JsonProperty("external_customer_id") private val externalCustomerId: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("payment_provider") private val paymentProvider: PaymentProvider?, + @JsonProperty("payment_provider_id") private val paymentProviderId: String?, + @JsonProperty("reporting_configuration") private val reportingConfiguration: ReportingConfiguration?, - private val shippingAddress: ShippingAddress?, - private val taxConfiguration: TaxConfiguration?, - private val taxId: TaxId?, - private val timezone: String?, - private val additionalProperties: Map, + @JsonProperty("shipping_address") private val shippingAddress: ShippingAddress?, + @JsonProperty("tax_configuration") private val taxConfiguration: TaxConfiguration?, + @JsonProperty("tax_id") private val taxId: TaxId?, + @JsonProperty("timezone") private val timezone: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * A valid customer email, to be used for notifications. When Orb triggers payment through a * payment gateway, this email will be used for any automatically issued receipts. */ - @JsonProperty("email") fun email(): String? = email + @JsonProperty("email") fun email(): String = email /** The full name of the customer */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name @JsonProperty("accounting_sync_configuration") - fun accountingSyncConfiguration(): AccountingSyncConfiguration? = - accountingSyncConfiguration + fun accountingSyncConfiguration(): Optional = + Optional.ofNullable(accountingSyncConfiguration) /** * Additional email addresses for this customer. If populated, these email addresses will be * CC'd for customer communications. */ - @JsonProperty("additional_emails") fun additionalEmails(): List? = additionalEmails + @JsonProperty("additional_emails") + fun additionalEmails(): Optional> = Optional.ofNullable(additionalEmails) /** * Used to determine if invoices for this customer will automatically attempt to charge a * saved payment method, if available. This parameter defaults to `True` when a payment * provider is provided on customer creation. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") + fun autoCollection(): Optional = Optional.ofNullable(autoCollection) - @JsonProperty("billing_address") fun billingAddress(): BillingAddress? = billingAddress + @JsonProperty("billing_address") + fun billingAddress(): Optional = Optional.ofNullable(billingAddress) /** * An ISO 4217 currency string used for the customer's invoices and balance. If not set at * creation time, will be set at subscription creation time. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) - @JsonProperty("email_delivery") fun emailDelivery(): Boolean? = emailDelivery + @JsonProperty("email_delivery") + fun emailDelivery(): Optional = Optional.ofNullable(emailDelivery) /** * An optional user-defined ID for this customer resource, used throughout the system as an * alias for this Customer. Use this field to identify a customer by an existing identifier * in your system. */ - @JsonProperty("external_customer_id") fun externalCustomerId(): String? = externalCustomerId + @JsonProperty("external_customer_id") + fun externalCustomerId(): Optional = Optional.ofNullable(externalCustomerId) /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * This is used for creating charges or invoices in an external system via Orb. When not in * test mode, the connection must first be configured in the Orb webapp. */ - @JsonProperty("payment_provider") fun paymentProvider(): PaymentProvider? = paymentProvider + @JsonProperty("payment_provider") + fun paymentProvider(): Optional = Optional.ofNullable(paymentProvider) /** * The ID of this customer in an external payments solution, such as Stripe. This is used * for creating charges or invoices in the external system via Orb. */ - @JsonProperty("payment_provider_id") fun paymentProviderId(): String? = paymentProviderId + @JsonProperty("payment_provider_id") + fun paymentProviderId(): Optional = Optional.ofNullable(paymentProviderId) @JsonProperty("reporting_configuration") - fun reportingConfiguration(): ReportingConfiguration? = reportingConfiguration + fun reportingConfiguration(): Optional = + Optional.ofNullable(reportingConfiguration) - @JsonProperty("shipping_address") fun shippingAddress(): ShippingAddress? = shippingAddress + @JsonProperty("shipping_address") + fun shippingAddress(): Optional = Optional.ofNullable(shippingAddress) @JsonProperty("tax_configuration") - fun taxConfiguration(): TaxConfiguration? = taxConfiguration + fun taxConfiguration(): Optional = Optional.ofNullable(taxConfiguration) /** * Tax IDs are commonly required to be displayed on customer invoices, which are added to @@ -324,14 +336,14 @@ constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonProperty("tax_id") fun taxId(): TaxId? = taxId + @JsonProperty("tax_id") fun taxId(): Optional = Optional.ofNullable(taxId) /** * A timezone identifier from the IANA timezone database, such as `"America/Los_Angeles"`. * This defaults to your account's timezone if not set. This cannot be changed after * customer creation. */ - @JsonProperty("timezone") fun timezone(): String? = timezone + @JsonProperty("timezone") fun timezone(): Optional = Optional.ofNullable(timezone) @JsonAnyGetter @ExcludeMissing @@ -367,24 +379,24 @@ constructor( @JvmSynthetic internal fun from(customerCreateBody: CustomerCreateBody) = apply { - this.email = customerCreateBody.email - this.name = customerCreateBody.name - this.accountingSyncConfiguration = customerCreateBody.accountingSyncConfiguration - this.additionalEmails = customerCreateBody.additionalEmails - this.autoCollection = customerCreateBody.autoCollection - this.billingAddress = customerCreateBody.billingAddress - this.currency = customerCreateBody.currency - this.emailDelivery = customerCreateBody.emailDelivery - this.externalCustomerId = customerCreateBody.externalCustomerId - this.metadata = customerCreateBody.metadata - this.paymentProvider = customerCreateBody.paymentProvider - this.paymentProviderId = customerCreateBody.paymentProviderId - this.reportingConfiguration = customerCreateBody.reportingConfiguration - this.shippingAddress = customerCreateBody.shippingAddress - this.taxConfiguration = customerCreateBody.taxConfiguration - this.taxId = customerCreateBody.taxId - this.timezone = customerCreateBody.timezone - additionalProperties(customerCreateBody.additionalProperties) + email = customerCreateBody.email + name = customerCreateBody.name + accountingSyncConfiguration = customerCreateBody.accountingSyncConfiguration + additionalEmails = customerCreateBody.additionalEmails?.toMutableList() + autoCollection = customerCreateBody.autoCollection + billingAddress = customerCreateBody.billingAddress + currency = customerCreateBody.currency + emailDelivery = customerCreateBody.emailDelivery + externalCustomerId = customerCreateBody.externalCustomerId + metadata = customerCreateBody.metadata + paymentProvider = customerCreateBody.paymentProvider + paymentProviderId = customerCreateBody.paymentProviderId + reportingConfiguration = customerCreateBody.reportingConfiguration + shippingAddress = customerCreateBody.shippingAddress + taxConfiguration = customerCreateBody.taxConfiguration + taxId = customerCreateBody.taxId + timezone = customerCreateBody.timezone + additionalProperties = customerCreateBody.additionalProperties.toMutableMap() } /** @@ -392,12 +404,11 @@ constructor( * through a payment gateway, this email will be used for any automatically issued * receipts. */ - @JsonProperty("email") fun email(email: String) = apply { this.email = email } + fun email(email: String) = apply { this.email = email } /** The full name of the customer */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } - @JsonProperty("accounting_sync_configuration") fun accountingSyncConfiguration( accountingSyncConfiguration: AccountingSyncConfiguration ) = apply { this.accountingSyncConfiguration = accountingSyncConfiguration } @@ -406,7 +417,6 @@ constructor( * Additional email addresses for this customer. If populated, these email addresses * will be CC'd for customer communications. */ - @JsonProperty("additional_emails") fun additionalEmails(additionalEmails: List) = apply { this.additionalEmails = additionalEmails } @@ -416,12 +426,10 @@ constructor( * a saved payment method, if available. This parameter defaults to `True` when a * payment provider is provided on customer creation. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } - @JsonProperty("billing_address") fun billingAddress(billingAddress: BillingAddress) = apply { this.billingAddress = billingAddress } @@ -430,10 +438,8 @@ constructor( * An ISO 4217 currency string used for the customer's invoices and balance. If not set * at creation time, will be set at subscription creation time. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } - @JsonProperty("email_delivery") fun emailDelivery(emailDelivery: Boolean) = apply { this.emailDelivery = emailDelivery } /** @@ -441,7 +447,6 @@ constructor( * an alias for this Customer. Use this field to identify a customer by an existing * identifier in your system. */ - @JsonProperty("external_customer_id") fun externalCustomerId(externalCustomerId: String) = apply { this.externalCustomerId = externalCustomerId } @@ -451,14 +456,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * This is used for creating charges or invoices in an external system via Orb. When not * in test mode, the connection must first be configured in the Orb webapp. */ - @JsonProperty("payment_provider") fun paymentProvider(paymentProvider: PaymentProvider) = apply { this.paymentProvider = paymentProvider } @@ -467,22 +470,18 @@ constructor( * The ID of this customer in an external payments solution, such as Stripe. This is * used for creating charges or invoices in the external system via Orb. */ - @JsonProperty("payment_provider_id") fun paymentProviderId(paymentProviderId: String) = apply { this.paymentProviderId = paymentProviderId } - @JsonProperty("reporting_configuration") fun reportingConfiguration(reportingConfiguration: ReportingConfiguration) = apply { this.reportingConfiguration = reportingConfiguration } - @JsonProperty("shipping_address") fun shippingAddress(shippingAddress: ShippingAddress) = apply { this.shippingAddress = shippingAddress } - @JsonProperty("tax_configuration") fun taxConfiguration(taxConfiguration: TaxConfiguration) = apply { this.taxConfiguration = taxConfiguration } @@ -593,30 +592,34 @@ constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonProperty("tax_id") fun taxId(taxId: TaxId) = apply { this.taxId = taxId } + fun taxId(taxId: TaxId) = apply { this.taxId = taxId } /** * A timezone identifier from the IANA timezone database, such as * `"America/Los_Angeles"`. This defaults to your account's timezone if not set. This * cannot be changed after customer creation. */ - @JsonProperty("timezone") fun timezone(timezone: String) = apply { this.timezone = timezone } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCreateBody = CustomerCreateBody( checkNotNull(email) { "`email` is required but was not set" }, @@ -1081,19 +1084,22 @@ constructor( ) } - @JsonDeserialize(builder = AccountingSyncConfiguration.Builder::class) @NoAutoDetect class AccountingSyncConfiguration + @JsonCreator private constructor( - private val excluded: Boolean?, + @JsonProperty("excluded") private val excluded: Boolean?, + @JsonProperty("accounting_providers") private val accountingProviders: List?, - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("excluded") fun excluded(): Boolean? = excluded + @JsonProperty("excluded") fun excluded(): Optional = Optional.ofNullable(excluded) @JsonProperty("accounting_providers") - fun accountingProviders(): List? = accountingProviders + fun accountingProviders(): Optional> = + Optional.ofNullable(accountingProviders) @JsonAnyGetter @ExcludeMissing @@ -1114,33 +1120,38 @@ constructor( @JvmSynthetic internal fun from(accountingSyncConfiguration: AccountingSyncConfiguration) = apply { - this.excluded = accountingSyncConfiguration.excluded - this.accountingProviders = accountingSyncConfiguration.accountingProviders - additionalProperties(accountingSyncConfiguration.additionalProperties) + excluded = accountingSyncConfiguration.excluded + accountingProviders = + accountingSyncConfiguration.accountingProviders?.toMutableList() + additionalProperties = + accountingSyncConfiguration.additionalProperties.toMutableMap() } - @JsonProperty("excluded") fun excluded(excluded: Boolean) = apply { this.excluded = excluded } - @JsonProperty("accounting_providers") fun accountingProviders(accountingProviders: List) = apply { this.accountingProviders = accountingProviders } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AccountingSyncConfiguration = AccountingSyncConfiguration( excluded, @@ -1149,19 +1160,20 @@ constructor( ) } - @JsonDeserialize(builder = AccountingProvider.Builder::class) @NoAutoDetect class AccountingProvider + @JsonCreator private constructor( - private val providerType: String?, - private val externalProviderId: String?, - private val additionalProperties: Map, + @JsonProperty("provider_type") private val providerType: String, + @JsonProperty("external_provider_id") private val externalProviderId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("provider_type") fun providerType(): String? = providerType + @JsonProperty("provider_type") fun providerType(): String = providerType @JsonProperty("external_provider_id") - fun externalProviderId(): String? = externalProviderId + fun externalProviderId(): String = externalProviderId @JsonAnyGetter @ExcludeMissing @@ -1182,27 +1194,24 @@ constructor( @JvmSynthetic internal fun from(accountingProvider: AccountingProvider) = apply { - this.providerType = accountingProvider.providerType - this.externalProviderId = accountingProvider.externalProviderId - additionalProperties(accountingProvider.additionalProperties) + providerType = accountingProvider.providerType + externalProviderId = accountingProvider.externalProviderId + additionalProperties = accountingProvider.additionalProperties.toMutableMap() } - @JsonProperty("provider_type") fun providerType(providerType: String) = apply { this.providerType = providerType } - @JsonProperty("external_provider_id") fun externalProviderId(externalProviderId: String) = apply { this.externalProviderId = externalProviderId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1210,6 +1219,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AccountingProvider = AccountingProvider( checkNotNull(providerType) { "`providerType` is required but was not set" }, @@ -1256,30 +1273,32 @@ constructor( "AccountingSyncConfiguration{excluded=$excluded, accountingProviders=$accountingProviders, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingAddress.Builder::class) @NoAutoDetect class BillingAddress + @JsonCreator private constructor( - private val line1: String?, - private val line2: String?, - private val city: String?, - private val state: String?, - private val postalCode: String?, - private val country: String?, - private val additionalProperties: Map, + @JsonProperty("line1") private val line1: String?, + @JsonProperty("line2") private val line2: String?, + @JsonProperty("city") private val city: String?, + @JsonProperty("state") private val state: String?, + @JsonProperty("postal_code") private val postalCode: String?, + @JsonProperty("country") private val country: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("line1") fun line1(): String? = line1 + @JsonProperty("line1") fun line1(): Optional = Optional.ofNullable(line1) - @JsonProperty("line2") fun line2(): String? = line2 + @JsonProperty("line2") fun line2(): Optional = Optional.ofNullable(line2) - @JsonProperty("city") fun city(): String? = city + @JsonProperty("city") fun city(): Optional = Optional.ofNullable(city) - @JsonProperty("state") fun state(): String? = state + @JsonProperty("state") fun state(): Optional = Optional.ofNullable(state) - @JsonProperty("postal_code") fun postalCode(): String? = postalCode + @JsonProperty("postal_code") + fun postalCode(): Optional = Optional.ofNullable(postalCode) - @JsonProperty("country") fun country(): String? = country + @JsonProperty("country") fun country(): Optional = Optional.ofNullable(country) @JsonAnyGetter @ExcludeMissing @@ -1304,42 +1323,46 @@ constructor( @JvmSynthetic internal fun from(billingAddress: BillingAddress) = apply { - this.line1 = billingAddress.line1 - this.line2 = billingAddress.line2 - this.city = billingAddress.city - this.state = billingAddress.state - this.postalCode = billingAddress.postalCode - this.country = billingAddress.country - additionalProperties(billingAddress.additionalProperties) + line1 = billingAddress.line1 + line2 = billingAddress.line2 + city = billingAddress.city + state = billingAddress.state + postalCode = billingAddress.postalCode + country = billingAddress.country + additionalProperties = billingAddress.additionalProperties.toMutableMap() } - @JsonProperty("line1") fun line1(line1: String) = apply { this.line1 = line1 } + fun line1(line1: String) = apply { this.line1 = line1 } - @JsonProperty("line2") fun line2(line2: String) = apply { this.line2 = line2 } + fun line2(line2: String) = apply { this.line2 = line2 } - @JsonProperty("city") fun city(city: String) = apply { this.city = city } + fun city(city: String) = apply { this.city = city } - @JsonProperty("state") fun state(state: String) = apply { this.state = state } + fun state(state: String) = apply { this.state = state } - @JsonProperty("postal_code") fun postalCode(postalCode: String) = apply { this.postalCode = postalCode } - @JsonProperty("country") fun country(country: String) = apply { this.country = country } + fun country(country: String) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingAddress = BillingAddress( line1, @@ -1375,11 +1398,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1399,23 +1423,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1511,15 +1540,16 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ReportingConfiguration.Builder::class) @NoAutoDetect class ReportingConfiguration + @JsonCreator private constructor( - private val exempt: Boolean?, - private val additionalProperties: Map, + @JsonProperty("exempt") private val exempt: Boolean, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("exempt") fun exempt(): Boolean? = exempt + @JsonProperty("exempt") fun exempt(): Boolean = exempt @JsonAnyGetter @ExcludeMissing @@ -1539,26 +1569,31 @@ constructor( @JvmSynthetic internal fun from(reportingConfiguration: ReportingConfiguration) = apply { - this.exempt = reportingConfiguration.exempt - additionalProperties(reportingConfiguration.additionalProperties) + exempt = reportingConfiguration.exempt + additionalProperties = reportingConfiguration.additionalProperties.toMutableMap() } - @JsonProperty("exempt") fun exempt(exempt: Boolean) = apply { this.exempt = exempt } + fun exempt(exempt: Boolean) = apply { this.exempt = exempt } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ReportingConfiguration = ReportingConfiguration( checkNotNull(exempt) { "`exempt` is required but was not set" }, @@ -1584,30 +1619,32 @@ constructor( "ReportingConfiguration{exempt=$exempt, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ShippingAddress.Builder::class) @NoAutoDetect class ShippingAddress + @JsonCreator private constructor( - private val line1: String?, - private val line2: String?, - private val city: String?, - private val state: String?, - private val postalCode: String?, - private val country: String?, - private val additionalProperties: Map, + @JsonProperty("line1") private val line1: String?, + @JsonProperty("line2") private val line2: String?, + @JsonProperty("city") private val city: String?, + @JsonProperty("state") private val state: String?, + @JsonProperty("postal_code") private val postalCode: String?, + @JsonProperty("country") private val country: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("line1") fun line1(): String? = line1 + @JsonProperty("line1") fun line1(): Optional = Optional.ofNullable(line1) - @JsonProperty("line2") fun line2(): String? = line2 + @JsonProperty("line2") fun line2(): Optional = Optional.ofNullable(line2) - @JsonProperty("city") fun city(): String? = city + @JsonProperty("city") fun city(): Optional = Optional.ofNullable(city) - @JsonProperty("state") fun state(): String? = state + @JsonProperty("state") fun state(): Optional = Optional.ofNullable(state) - @JsonProperty("postal_code") fun postalCode(): String? = postalCode + @JsonProperty("postal_code") + fun postalCode(): Optional = Optional.ofNullable(postalCode) - @JsonProperty("country") fun country(): String? = country + @JsonProperty("country") fun country(): Optional = Optional.ofNullable(country) @JsonAnyGetter @ExcludeMissing @@ -1632,42 +1669,46 @@ constructor( @JvmSynthetic internal fun from(shippingAddress: ShippingAddress) = apply { - this.line1 = shippingAddress.line1 - this.line2 = shippingAddress.line2 - this.city = shippingAddress.city - this.state = shippingAddress.state - this.postalCode = shippingAddress.postalCode - this.country = shippingAddress.country - additionalProperties(shippingAddress.additionalProperties) + line1 = shippingAddress.line1 + line2 = shippingAddress.line2 + city = shippingAddress.city + state = shippingAddress.state + postalCode = shippingAddress.postalCode + country = shippingAddress.country + additionalProperties = shippingAddress.additionalProperties.toMutableMap() } - @JsonProperty("line1") fun line1(line1: String) = apply { this.line1 = line1 } + fun line1(line1: String) = apply { this.line1 = line1 } - @JsonProperty("line2") fun line2(line2: String) = apply { this.line2 = line2 } + fun line2(line2: String) = apply { this.line2 = line2 } - @JsonProperty("city") fun city(city: String) = apply { this.city = city } + fun city(city: String) = apply { this.city = city } - @JsonProperty("state") fun state(state: String) = apply { this.state = state } + fun state(state: String) = apply { this.state = state } - @JsonProperty("postal_code") fun postalCode(postalCode: String) = apply { this.postalCode = postalCode } - @JsonProperty("country") fun country(country: String) = apply { this.country = country } + fun country(country: String) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ShippingAddress = ShippingAddress( line1, @@ -1707,8 +1748,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newAvalaraTaxConfiguration(): Optional = Optional.ofNullable(newAvalaraTaxConfiguration) @@ -1737,17 +1776,6 @@ constructor( } } - fun validate(): TaxConfiguration = apply { - if (!validated) { - if (newAvalaraTaxConfiguration == null && newTaxJarConfiguration == null) { - throw OrbInvalidDataException("Unknown TaxConfiguration: $_json") - } - newAvalaraTaxConfiguration?.validate() - newTaxJarConfiguration?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -1802,23 +1830,14 @@ constructor( when (taxProvider) { "avalara" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return TaxConfiguration( - newAvalaraTaxConfiguration = it, - _json = json - ) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return TaxConfiguration(newAvalaraTaxConfiguration = it, _json = json) + } } "taxjar" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return TaxConfiguration(newTaxJarConfiguration = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return TaxConfiguration(newTaxJarConfiguration = it, _json = json) + } } } @@ -1844,46 +1863,28 @@ constructor( } } - @JsonDeserialize(builder = NewAvalaraTaxConfiguration.Builder::class) @NoAutoDetect class NewAvalaraTaxConfiguration + @JsonCreator private constructor( - private val taxExempt: JsonField, - private val taxProvider: JsonField, - private val taxExemptionCode: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_exempt") private val taxExempt: Boolean, + @JsonProperty("tax_provider") private val taxProvider: TaxProvider, + @JsonProperty("tax_exemption_code") private val taxExemptionCode: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun taxExempt(): Boolean = taxExempt.getRequired("tax_exempt") - - fun taxProvider(): TaxProvider = taxProvider.getRequired("tax_provider") - - fun taxExemptionCode(): Optional = - Optional.ofNullable(taxExemptionCode.getNullable("tax_exemption_code")) - - @JsonProperty("tax_exempt") @ExcludeMissing fun _taxExempt() = taxExempt + @JsonProperty("tax_exempt") fun taxExempt(): Boolean = taxExempt - @JsonProperty("tax_provider") @ExcludeMissing fun _taxProvider() = taxProvider + @JsonProperty("tax_provider") fun taxProvider(): TaxProvider = taxProvider @JsonProperty("tax_exemption_code") - @ExcludeMissing - fun _taxExemptionCode() = taxExemptionCode + fun taxExemptionCode(): Optional = Optional.ofNullable(taxExemptionCode) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewAvalaraTaxConfiguration = apply { - if (!validated) { - taxExempt() - taxProvider() - taxExemptionCode() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1893,50 +1894,35 @@ constructor( class Builder { - private var taxExempt: JsonField = JsonMissing.of() - private var taxProvider: JsonField = JsonMissing.of() - private var taxExemptionCode: JsonField = JsonMissing.of() + private var taxExempt: Boolean? = null + private var taxProvider: TaxProvider? = null + private var taxExemptionCode: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newAvalaraTaxConfiguration: NewAvalaraTaxConfiguration) = apply { - this.taxExempt = newAvalaraTaxConfiguration.taxExempt - this.taxProvider = newAvalaraTaxConfiguration.taxProvider - this.taxExemptionCode = newAvalaraTaxConfiguration.taxExemptionCode - additionalProperties(newAvalaraTaxConfiguration.additionalProperties) + taxExempt = newAvalaraTaxConfiguration.taxExempt + taxProvider = newAvalaraTaxConfiguration.taxProvider + taxExemptionCode = newAvalaraTaxConfiguration.taxExemptionCode + additionalProperties = + newAvalaraTaxConfiguration.additionalProperties.toMutableMap() } - fun taxExempt(taxExempt: Boolean) = taxExempt(JsonField.of(taxExempt)) - - @JsonProperty("tax_exempt") - @ExcludeMissing - fun taxExempt(taxExempt: JsonField) = apply { this.taxExempt = taxExempt } + fun taxExempt(taxExempt: Boolean) = apply { this.taxExempt = taxExempt } - fun taxProvider(taxProvider: TaxProvider) = taxProvider(JsonField.of(taxProvider)) + fun taxProvider(taxProvider: TaxProvider) = apply { this.taxProvider = taxProvider } - @JsonProperty("tax_provider") - @ExcludeMissing - fun taxProvider(taxProvider: JsonField) = apply { - this.taxProvider = taxProvider - } - - fun taxExemptionCode(taxExemptionCode: String) = - taxExemptionCode(JsonField.of(taxExemptionCode)) - - @JsonProperty("tax_exemption_code") - @ExcludeMissing - fun taxExemptionCode(taxExemptionCode: JsonField) = apply { + fun taxExemptionCode(taxExemptionCode: String) = apply { this.taxExemptionCode = taxExemptionCode } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1944,10 +1930,18 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewAvalaraTaxConfiguration = NewAvalaraTaxConfiguration( - taxExempt, - taxProvider, + checkNotNull(taxExempt) { "`taxExempt` is required but was not set" }, + checkNotNull(taxProvider) { "`taxProvider` is required but was not set" }, taxExemptionCode, additionalProperties.toImmutable(), ) @@ -2022,37 +2016,24 @@ constructor( "NewAvalaraTaxConfiguration{taxExempt=$taxExempt, taxProvider=$taxProvider, taxExemptionCode=$taxExemptionCode, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewTaxJarConfiguration.Builder::class) @NoAutoDetect class NewTaxJarConfiguration + @JsonCreator private constructor( - private val taxExempt: JsonField, - private val taxProvider: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_exempt") private val taxExempt: Boolean, + @JsonProperty("tax_provider") private val taxProvider: TaxProvider, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun taxExempt(): Boolean = taxExempt.getRequired("tax_exempt") - - fun taxProvider(): TaxProvider = taxProvider.getRequired("tax_provider") - - @JsonProperty("tax_exempt") @ExcludeMissing fun _taxExempt() = taxExempt + @JsonProperty("tax_exempt") fun taxExempt(): Boolean = taxExempt - @JsonProperty("tax_provider") @ExcludeMissing fun _taxProvider() = taxProvider + @JsonProperty("tax_provider") fun taxProvider(): TaxProvider = taxProvider @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewTaxJarConfiguration = apply { - if (!validated) { - taxExempt() - taxProvider() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2062,39 +2043,29 @@ constructor( class Builder { - private var taxExempt: JsonField = JsonMissing.of() - private var taxProvider: JsonField = JsonMissing.of() + private var taxExempt: Boolean? = null + private var taxProvider: TaxProvider? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newTaxJarConfiguration: NewTaxJarConfiguration) = apply { - this.taxExempt = newTaxJarConfiguration.taxExempt - this.taxProvider = newTaxJarConfiguration.taxProvider - additionalProperties(newTaxJarConfiguration.additionalProperties) + taxExempt = newTaxJarConfiguration.taxExempt + taxProvider = newTaxJarConfiguration.taxProvider + additionalProperties = + newTaxJarConfiguration.additionalProperties.toMutableMap() } - fun taxExempt(taxExempt: Boolean) = taxExempt(JsonField.of(taxExempt)) - - @JsonProperty("tax_exempt") - @ExcludeMissing - fun taxExempt(taxExempt: JsonField) = apply { this.taxExempt = taxExempt } - - fun taxProvider(taxProvider: TaxProvider) = taxProvider(JsonField.of(taxProvider)) + fun taxExempt(taxExempt: Boolean) = apply { this.taxExempt = taxExempt } - @JsonProperty("tax_provider") - @ExcludeMissing - fun taxProvider(taxProvider: JsonField) = apply { - this.taxProvider = taxProvider - } + fun taxProvider(taxProvider: TaxProvider) = apply { this.taxProvider = taxProvider } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2102,10 +2073,18 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewTaxJarConfiguration = NewTaxJarConfiguration( - taxExempt, - taxProvider, + checkNotNull(taxExempt) { "`taxExempt` is required but was not set" }, + checkNotNull(taxProvider) { "`taxProvider` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -2286,21 +2265,22 @@ constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonDeserialize(builder = TaxId.Builder::class) @NoAutoDetect class TaxId + @JsonCreator private constructor( - private val country: Country?, - private val type: Type?, - private val value: String?, - private val additionalProperties: Map, + @JsonProperty("country") private val country: Country, + @JsonProperty("type") private val type: Type, + @JsonProperty("value") private val value: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("country") fun country(): Country? = country + @JsonProperty("country") fun country(): Country = country - @JsonProperty("type") fun type(): Type? = type + @JsonProperty("type") fun type(): Type = type - @JsonProperty("value") fun value(): String? = value + @JsonProperty("value") fun value(): String = value @JsonAnyGetter @ExcludeMissing @@ -2322,33 +2302,37 @@ constructor( @JvmSynthetic internal fun from(taxId: TaxId) = apply { - this.country = taxId.country - this.type = taxId.type - this.value = taxId.value - additionalProperties(taxId.additionalProperties) + country = taxId.country + type = taxId.type + value = taxId.value + additionalProperties = taxId.additionalProperties.toMutableMap() } - @JsonProperty("country") fun country(country: Country) = apply { this.country = country } - @JsonProperty("type") fun type(type: Type) = apply { this.type = type } + fun type(type: Type) = apply { this.type = type } - @JsonProperty("value") fun value(value: String) = apply { this.value = value } + fun value(value: String) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TaxId = TaxId( checkNotNull(country) { "`country` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryByExternalIdParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryByExternalIdParams.kt index f85e73ea..cda7e786 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryByExternalIdParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryByExternalIdParams.kt @@ -23,6 +23,7 @@ import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.LocalDate @@ -660,20 +661,21 @@ constructor( ) } - @JsonDeserialize(builder = AddIncrementCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddIncrementCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val amount: Double?, - private val expiryDate: OffsetDateTime?, - private val effectiveDate: OffsetDateTime?, - private val perUnitCostBasis: String?, - private val invoiceSettings: InvoiceSettings?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("amount") private val amount: Double, + @JsonProperty("expiry_date") private val expiryDate: OffsetDateTime?, + @JsonProperty("effective_date") private val effectiveDate: OffsetDateTime?, + @JsonProperty("per_unit_cost_basis") private val perUnitCostBasis: String?, + @JsonProperty("invoice_settings") private val invoiceSettings: InvoiceSettings?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -681,50 +683,55 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Double = amount /** An ISO 8601 format date that denotes when this credit balance should expire. */ - @JsonProperty("expiry_date") fun expiryDate(): OffsetDateTime? = expiryDate + @JsonProperty("expiry_date") + fun expiryDate(): Optional = Optional.ofNullable(expiryDate) /** * An ISO 8601 format date that denotes when this credit balance should become available for * use. */ - @JsonProperty("effective_date") fun effectiveDate(): OffsetDateTime? = effectiveDate + @JsonProperty("effective_date") + fun effectiveDate(): Optional = Optional.ofNullable(effectiveDate) /** * Can only be specified when entry_type=increment. How much, in the customer's currency, a * customer paid for a single credit in this block */ - @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(): String? = perUnitCostBasis + @JsonProperty("per_unit_cost_basis") + fun perUnitCostBasis(): Optional = Optional.ofNullable(perUnitCostBasis) /** * Passing `invoice_settings` automatically generates an invoice for the newly added * credits. If `invoice_settings` is passed, you must specify per_unit_cost_basis, as the * calculation of the invoice total is done on that basis. */ - @JsonProperty("invoice_settings") fun invoiceSettings(): InvoiceSettings? = invoiceSettings + @JsonProperty("invoice_settings") + fun invoiceSettings(): Optional = Optional.ofNullable(invoiceSettings) @JsonAnyGetter @ExcludeMissing @@ -755,18 +762,17 @@ constructor( addIncrementCreditLedgerEntryRequestParams: AddIncrementCreditLedgerEntryRequestParams ) = apply { - this.metadata = addIncrementCreditLedgerEntryRequestParams.metadata - this.currency = addIncrementCreditLedgerEntryRequestParams.currency - this.description = addIncrementCreditLedgerEntryRequestParams.description - this.entryType = addIncrementCreditLedgerEntryRequestParams.entryType - this.amount = addIncrementCreditLedgerEntryRequestParams.amount - this.expiryDate = addIncrementCreditLedgerEntryRequestParams.expiryDate - this.effectiveDate = addIncrementCreditLedgerEntryRequestParams.effectiveDate - this.perUnitCostBasis = addIncrementCreditLedgerEntryRequestParams.perUnitCostBasis - this.invoiceSettings = addIncrementCreditLedgerEntryRequestParams.invoiceSettings - additionalProperties( - addIncrementCreditLedgerEntryRequestParams.additionalProperties - ) + metadata = addIncrementCreditLedgerEntryRequestParams.metadata + currency = addIncrementCreditLedgerEntryRequestParams.currency + description = addIncrementCreditLedgerEntryRequestParams.description + entryType = addIncrementCreditLedgerEntryRequestParams.entryType + amount = addIncrementCreditLedgerEntryRequestParams.amount + expiryDate = addIncrementCreditLedgerEntryRequestParams.expiryDate + effectiveDate = addIncrementCreditLedgerEntryRequestParams.effectiveDate + perUnitCostBasis = addIncrementCreditLedgerEntryRequestParams.perUnitCostBasis + invoiceSettings = addIncrementCreditLedgerEntryRequestParams.invoiceSettings + additionalProperties = + addIncrementCreditLedgerEntryRequestParams.additionalProperties.toMutableMap() } /** @@ -774,14 +780,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -789,27 +793,23 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } /** An ISO 8601 format date that denotes when this credit balance should expire. */ - @JsonProperty("expiry_date") fun expiryDate(expiryDate: OffsetDateTime) = apply { this.expiryDate = expiryDate } /** * An ISO 8601 format date that denotes when this credit balance should become available * for use. */ - @JsonProperty("effective_date") fun effectiveDate(effectiveDate: OffsetDateTime) = apply { this.effectiveDate = effectiveDate } @@ -818,7 +818,6 @@ constructor( * Can only be specified when entry_type=increment. How much, in the customer's * currency, a customer paid for a single credit in this block */ - @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(perUnitCostBasis: String) = apply { this.perUnitCostBasis = perUnitCostBasis } @@ -828,25 +827,29 @@ constructor( * credits. If `invoice_settings` is passed, you must specify per_unit_cost_basis, as * the calculation of the invoice total is done on that basis. */ - @JsonProperty("invoice_settings") fun invoiceSettings(invoiceSettings: InvoiceSettings) = apply { this.invoiceSettings = invoiceSettings } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddIncrementCreditLedgerEntryRequestParams = AddIncrementCreditLedgerEntryRequestParams( metadata, @@ -918,38 +921,41 @@ constructor( * credits. If `invoice_settings` is passed, you must specify per_unit_cost_basis, as the * calculation of the invoice total is done on that basis. */ - @JsonDeserialize(builder = InvoiceSettings.Builder::class) @NoAutoDetect class InvoiceSettings + @JsonCreator private constructor( - private val autoCollection: Boolean?, - private val netTerms: Long?, - private val memo: String?, + @JsonProperty("auto_collection") private val autoCollection: Boolean, + @JsonProperty("net_terms") private val netTerms: Long, + @JsonProperty("memo") private val memo: String?, + @JsonProperty("require_successful_payment") private val requireSuccessfulPayment: Boolean?, - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") fun autoCollection(): Boolean = autoCollection /** * The net terms determines the difference between the invoice date and the issue date * for the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") fun netTerms(): Long? = netTerms + @JsonProperty("net_terms") fun netTerms(): Long = netTerms /** An optional memo to display on the invoice. */ - @JsonProperty("memo") fun memo(): String? = memo + @JsonProperty("memo") fun memo(): Optional = Optional.ofNullable(memo) /** * If true, the new credit block will require that the corresponding invoice is paid * before it can be drawn down from. */ @JsonProperty("require_successful_payment") - fun requireSuccessfulPayment(): Boolean? = requireSuccessfulPayment + fun requireSuccessfulPayment(): Optional = + Optional.ofNullable(requireSuccessfulPayment) @JsonAnyGetter @ExcludeMissing @@ -972,18 +978,17 @@ constructor( @JvmSynthetic internal fun from(invoiceSettings: InvoiceSettings) = apply { - this.autoCollection = invoiceSettings.autoCollection - this.netTerms = invoiceSettings.netTerms - this.memo = invoiceSettings.memo - this.requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment - additionalProperties(invoiceSettings.additionalProperties) + autoCollection = invoiceSettings.autoCollection + netTerms = invoiceSettings.netTerms + memo = invoiceSettings.memo + requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment + additionalProperties = invoiceSettings.additionalProperties.toMutableMap() } /** * Whether the credits purchase invoice should auto collect with the customer's * saved payment method. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } @@ -993,29 +998,26 @@ constructor( * date for the invoice. If you intend the invoice to be due on issue, set this * to 0. */ - @JsonProperty("net_terms") fun netTerms(netTerms: Long) = apply { this.netTerms = netTerms } /** An optional memo to display on the invoice. */ - @JsonProperty("memo") fun memo(memo: String) = apply { this.memo = memo } + fun memo(memo: String) = apply { this.memo = memo } /** * If true, the new credit block will require that the corresponding invoice is paid * before it can be drawn down from. */ - @JsonProperty("require_successful_payment") fun requireSuccessfulPayment(requireSuccessfulPayment: Boolean) = apply { this.requireSuccessfulPayment = requireSuccessfulPayment } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1023,6 +1025,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceSettings = InvoiceSettings( checkNotNull(autoCollection) { @@ -1058,11 +1068,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1082,17 +1093,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1100,6 +1110,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1138,16 +1156,17 @@ constructor( "AddIncrementCreditLedgerEntryRequestParams{metadata=$metadata, currency=$currency, description=$description, entryType=$entryType, amount=$amount, expiryDate=$expiryDate, effectiveDate=$effectiveDate, perUnitCostBasis=$perUnitCostBasis, invoiceSettings=$invoiceSettings, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddDecrementCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddDecrementCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val amount: Double?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("amount") private val amount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -1155,28 +1174,29 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Double = amount @JsonAnyGetter @ExcludeMissing @@ -1203,14 +1223,13 @@ constructor( addDecrementCreditLedgerEntryRequestParams: AddDecrementCreditLedgerEntryRequestParams ) = apply { - this.metadata = addDecrementCreditLedgerEntryRequestParams.metadata - this.currency = addDecrementCreditLedgerEntryRequestParams.currency - this.description = addDecrementCreditLedgerEntryRequestParams.description - this.entryType = addDecrementCreditLedgerEntryRequestParams.entryType - this.amount = addDecrementCreditLedgerEntryRequestParams.amount - additionalProperties( - addDecrementCreditLedgerEntryRequestParams.additionalProperties - ) + metadata = addDecrementCreditLedgerEntryRequestParams.metadata + currency = addDecrementCreditLedgerEntryRequestParams.currency + description = addDecrementCreditLedgerEntryRequestParams.description + entryType = addDecrementCreditLedgerEntryRequestParams.entryType + amount = addDecrementCreditLedgerEntryRequestParams.amount + additionalProperties = + addDecrementCreditLedgerEntryRequestParams.additionalProperties.toMutableMap() } /** @@ -1218,14 +1237,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -1233,32 +1250,35 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddDecrementCreditLedgerEntryRequestParams = AddDecrementCreditLedgerEntryRequestParams( metadata, @@ -1326,11 +1346,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1350,17 +1371,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1368,6 +1388,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1406,19 +1434,20 @@ constructor( "AddDecrementCreditLedgerEntryRequestParams{metadata=$metadata, currency=$currency, description=$description, entryType=$entryType, amount=$amount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddExpirationChangeCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddExpirationChangeCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val amount: Double?, - private val expiryDate: OffsetDateTime?, - private val blockId: String?, - private val targetExpiryDate: LocalDate?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("amount") private val amount: Double?, + @JsonProperty("expiry_date") private val expiryDate: OffsetDateTime?, + @JsonProperty("block_id") private val blockId: String?, + @JsonProperty("target_expiry_date") private val targetExpiryDate: LocalDate, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -1426,43 +1455,45 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Optional = Optional.ofNullable(amount) /** An ISO 8601 format date that identifies the origination credit block to expire */ - @JsonProperty("expiry_date") fun expiryDate(): OffsetDateTime? = expiryDate + @JsonProperty("expiry_date") + fun expiryDate(): Optional = Optional.ofNullable(expiryDate) /** * The ID of the block affected by an expiration_change, used to differentiate between * multiple blocks with the same `expiry_date`. */ - @JsonProperty("block_id") fun blockId(): String? = blockId + @JsonProperty("block_id") fun blockId(): Optional = Optional.ofNullable(blockId) /** * A future date (specified in YYYY-MM-DD format) used for expiration change, denoting when * credits transferred (as part of a partial block expiration) should expire. */ - @JsonProperty("target_expiry_date") fun targetExpiryDate(): LocalDate? = targetExpiryDate + @JsonProperty("target_expiry_date") fun targetExpiryDate(): LocalDate = targetExpiryDate @JsonAnyGetter @ExcludeMissing @@ -1492,18 +1523,18 @@ constructor( addExpirationChangeCreditLedgerEntryRequestParams: AddExpirationChangeCreditLedgerEntryRequestParams ) = apply { - this.metadata = addExpirationChangeCreditLedgerEntryRequestParams.metadata - this.currency = addExpirationChangeCreditLedgerEntryRequestParams.currency - this.description = addExpirationChangeCreditLedgerEntryRequestParams.description - this.entryType = addExpirationChangeCreditLedgerEntryRequestParams.entryType - this.amount = addExpirationChangeCreditLedgerEntryRequestParams.amount - this.expiryDate = addExpirationChangeCreditLedgerEntryRequestParams.expiryDate - this.blockId = addExpirationChangeCreditLedgerEntryRequestParams.blockId - this.targetExpiryDate = + metadata = addExpirationChangeCreditLedgerEntryRequestParams.metadata + currency = addExpirationChangeCreditLedgerEntryRequestParams.currency + description = addExpirationChangeCreditLedgerEntryRequestParams.description + entryType = addExpirationChangeCreditLedgerEntryRequestParams.entryType + amount = addExpirationChangeCreditLedgerEntryRequestParams.amount + expiryDate = addExpirationChangeCreditLedgerEntryRequestParams.expiryDate + blockId = addExpirationChangeCreditLedgerEntryRequestParams.blockId + targetExpiryDate = addExpirationChangeCreditLedgerEntryRequestParams.targetExpiryDate - additionalProperties( + additionalProperties = addExpirationChangeCreditLedgerEntryRequestParams.additionalProperties - ) + .toMutableMap() } /** @@ -1511,14 +1542,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -1526,52 +1555,52 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } /** An ISO 8601 format date that identifies the origination credit block to expire */ - @JsonProperty("expiry_date") fun expiryDate(expiryDate: OffsetDateTime) = apply { this.expiryDate = expiryDate } /** * The ID of the block affected by an expiration_change, used to differentiate between * multiple blocks with the same `expiry_date`. */ - @JsonProperty("block_id") fun blockId(blockId: String) = apply { this.blockId = blockId } /** * A future date (specified in YYYY-MM-DD format) used for expiration change, denoting * when credits transferred (as part of a partial block expiration) should expire. */ - @JsonProperty("target_expiry_date") fun targetExpiryDate(targetExpiryDate: LocalDate) = apply { this.targetExpiryDate = targetExpiryDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddExpirationChangeCreditLedgerEntryRequestParams = AddExpirationChangeCreditLedgerEntryRequestParams( metadata, @@ -1644,11 +1673,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1668,17 +1698,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1686,6 +1715,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1724,18 +1761,19 @@ constructor( "AddExpirationChangeCreditLedgerEntryRequestParams{metadata=$metadata, currency=$currency, description=$description, entryType=$entryType, amount=$amount, expiryDate=$expiryDate, blockId=$blockId, targetExpiryDate=$targetExpiryDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddVoidCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddVoidCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val blockId: String?, - private val voidReason: VoidReason?, - private val amount: Double?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("block_id") private val blockId: String, + @JsonProperty("void_reason") private val voidReason: VoidReason?, + @JsonProperty("amount") private val amount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -1743,34 +1781,36 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** The ID of the block to void. */ - @JsonProperty("block_id") fun blockId(): String? = blockId + @JsonProperty("block_id") fun blockId(): String = blockId /** Can only be specified when `entry_type=void`. The reason for the void. */ - @JsonProperty("void_reason") fun voidReason(): VoidReason? = voidReason + @JsonProperty("void_reason") + fun voidReason(): Optional = Optional.ofNullable(voidReason) /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Double = amount @JsonAnyGetter @ExcludeMissing @@ -1798,14 +1838,15 @@ constructor( internal fun from( addVoidCreditLedgerEntryRequestParams: AddVoidCreditLedgerEntryRequestParams ) = apply { - this.metadata = addVoidCreditLedgerEntryRequestParams.metadata - this.currency = addVoidCreditLedgerEntryRequestParams.currency - this.description = addVoidCreditLedgerEntryRequestParams.description - this.entryType = addVoidCreditLedgerEntryRequestParams.entryType - this.blockId = addVoidCreditLedgerEntryRequestParams.blockId - this.voidReason = addVoidCreditLedgerEntryRequestParams.voidReason - this.amount = addVoidCreditLedgerEntryRequestParams.amount - additionalProperties(addVoidCreditLedgerEntryRequestParams.additionalProperties) + metadata = addVoidCreditLedgerEntryRequestParams.metadata + currency = addVoidCreditLedgerEntryRequestParams.currency + description = addVoidCreditLedgerEntryRequestParams.description + entryType = addVoidCreditLedgerEntryRequestParams.entryType + blockId = addVoidCreditLedgerEntryRequestParams.blockId + voidReason = addVoidCreditLedgerEntryRequestParams.voidReason + amount = addVoidCreditLedgerEntryRequestParams.amount + additionalProperties = + addVoidCreditLedgerEntryRequestParams.additionalProperties.toMutableMap() } /** @@ -1813,14 +1854,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -1828,40 +1867,41 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** The ID of the block to void. */ - @JsonProperty("block_id") fun blockId(blockId: String) = apply { this.blockId = blockId } /** Can only be specified when `entry_type=void`. The reason for the void. */ - @JsonProperty("void_reason") fun voidReason(voidReason: VoidReason) = apply { this.voidReason = voidReason } /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddVoidCreditLedgerEntryRequestParams = AddVoidCreditLedgerEntryRequestParams( metadata, @@ -1931,11 +1971,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1955,17 +1996,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1973,6 +2013,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2062,17 +2110,18 @@ constructor( "AddVoidCreditLedgerEntryRequestParams{metadata=$metadata, currency=$currency, description=$description, entryType=$entryType, blockId=$blockId, voidReason=$voidReason, amount=$amount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddAmendmentCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddAmendmentCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val amount: Double?, - private val blockId: String?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("amount") private val amount: Double, + @JsonProperty("block_id") private val blockId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -2080,31 +2129,32 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** * The number of credits to effect. Note that this is required for increment, decrement or * void operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Double = amount /** The ID of the block to reverse a decrement from. */ - @JsonProperty("block_id") fun blockId(): String? = blockId + @JsonProperty("block_id") fun blockId(): String = blockId @JsonAnyGetter @ExcludeMissing @@ -2132,15 +2182,14 @@ constructor( addAmendmentCreditLedgerEntryRequestParams: AddAmendmentCreditLedgerEntryRequestParams ) = apply { - this.metadata = addAmendmentCreditLedgerEntryRequestParams.metadata - this.currency = addAmendmentCreditLedgerEntryRequestParams.currency - this.description = addAmendmentCreditLedgerEntryRequestParams.description - this.entryType = addAmendmentCreditLedgerEntryRequestParams.entryType - this.amount = addAmendmentCreditLedgerEntryRequestParams.amount - this.blockId = addAmendmentCreditLedgerEntryRequestParams.blockId - additionalProperties( - addAmendmentCreditLedgerEntryRequestParams.additionalProperties - ) + metadata = addAmendmentCreditLedgerEntryRequestParams.metadata + currency = addAmendmentCreditLedgerEntryRequestParams.currency + description = addAmendmentCreditLedgerEntryRequestParams.description + entryType = addAmendmentCreditLedgerEntryRequestParams.entryType + amount = addAmendmentCreditLedgerEntryRequestParams.amount + blockId = addAmendmentCreditLedgerEntryRequestParams.blockId + additionalProperties = + addAmendmentCreditLedgerEntryRequestParams.additionalProperties.toMutableMap() } /** @@ -2148,14 +2197,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -2163,36 +2210,38 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** * The number of credits to effect. Note that this is required for increment, decrement * or void operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } /** The ID of the block to reverse a decrement from. */ - @JsonProperty("block_id") fun blockId(blockId: String) = apply { this.blockId = blockId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddAmendmentCreditLedgerEntryRequestParams = AddAmendmentCreditLedgerEntryRequestParams( metadata, @@ -2261,11 +2310,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -2285,17 +2335,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2303,6 +2352,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryByExternalIdResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryByExternalIdResponse.kt index 0c0f3f9a..8c2342bc 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryByExternalIdResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryByExternalIdResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -370,28 +371,51 @@ private constructor( } } - @JsonDeserialize(builder = IncrementLedgerEntry.Builder::class) @NoAutoDetect class IncrementLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -462,6 +486,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): IncrementLedgerEntry = apply { if (!validated) { metadata().validate() @@ -507,20 +533,20 @@ private constructor( @JvmSynthetic internal fun from(incrementLedgerEntry: IncrementLedgerEntry) = apply { - this.metadata = incrementLedgerEntry.metadata - this.id = incrementLedgerEntry.id - this.ledgerSequenceNumber = incrementLedgerEntry.ledgerSequenceNumber - this.entryStatus = incrementLedgerEntry.entryStatus - this.customer = incrementLedgerEntry.customer - this.startingBalance = incrementLedgerEntry.startingBalance - this.endingBalance = incrementLedgerEntry.endingBalance - this.amount = incrementLedgerEntry.amount - this.currency = incrementLedgerEntry.currency - this.createdAt = incrementLedgerEntry.createdAt - this.description = incrementLedgerEntry.description - this.creditBlock = incrementLedgerEntry.creditBlock - this.entryType = incrementLedgerEntry.entryType - additionalProperties(incrementLedgerEntry.additionalProperties) + metadata = incrementLedgerEntry.metadata + id = incrementLedgerEntry.id + ledgerSequenceNumber = incrementLedgerEntry.ledgerSequenceNumber + entryStatus = incrementLedgerEntry.entryStatus + customer = incrementLedgerEntry.customer + startingBalance = incrementLedgerEntry.startingBalance + endingBalance = incrementLedgerEntry.endingBalance + amount = incrementLedgerEntry.amount + currency = incrementLedgerEntry.currency + createdAt = incrementLedgerEntry.createdAt + description = incrementLedgerEntry.description + creditBlock = incrementLedgerEntry.creditBlock + entryType = incrementLedgerEntry.entryType + additionalProperties = incrementLedgerEntry.additionalProperties.toMutableMap() } /** @@ -535,112 +561,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): IncrementLedgerEntry = IncrementLedgerEntry( metadata, @@ -660,18 +665,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -692,6 +702,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -717,22 +729,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -740,20 +748,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -761,6 +766,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -788,17 +801,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -814,6 +830,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -837,34 +855,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -872,6 +885,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -1011,19 +1032,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -1043,17 +1065,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1061,6 +1082,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1099,31 +1128,60 @@ private constructor( "IncrementLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = DecrementLedgerEntry.Builder::class) @NoAutoDetect class DecrementLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val priceId: JsonField, - private val eventId: JsonField, - private val invoiceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("event_id") + @ExcludeMissing + private val eventId: JsonField = JsonMissing.of(), + @JsonProperty("invoice_id") + @ExcludeMissing + private val invoiceId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -1206,6 +1264,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): DecrementLedgerEntry = apply { if (!validated) { metadata().validate() @@ -1257,23 +1317,23 @@ private constructor( @JvmSynthetic internal fun from(decrementLedgerEntry: DecrementLedgerEntry) = apply { - this.metadata = decrementLedgerEntry.metadata - this.id = decrementLedgerEntry.id - this.ledgerSequenceNumber = decrementLedgerEntry.ledgerSequenceNumber - this.entryStatus = decrementLedgerEntry.entryStatus - this.customer = decrementLedgerEntry.customer - this.startingBalance = decrementLedgerEntry.startingBalance - this.endingBalance = decrementLedgerEntry.endingBalance - this.amount = decrementLedgerEntry.amount - this.currency = decrementLedgerEntry.currency - this.createdAt = decrementLedgerEntry.createdAt - this.description = decrementLedgerEntry.description - this.creditBlock = decrementLedgerEntry.creditBlock - this.entryType = decrementLedgerEntry.entryType - this.priceId = decrementLedgerEntry.priceId - this.eventId = decrementLedgerEntry.eventId - this.invoiceId = decrementLedgerEntry.invoiceId - additionalProperties(decrementLedgerEntry.additionalProperties) + metadata = decrementLedgerEntry.metadata + id = decrementLedgerEntry.id + ledgerSequenceNumber = decrementLedgerEntry.ledgerSequenceNumber + entryStatus = decrementLedgerEntry.entryStatus + customer = decrementLedgerEntry.customer + startingBalance = decrementLedgerEntry.startingBalance + endingBalance = decrementLedgerEntry.endingBalance + amount = decrementLedgerEntry.amount + currency = decrementLedgerEntry.currency + createdAt = decrementLedgerEntry.createdAt + description = decrementLedgerEntry.description + creditBlock = decrementLedgerEntry.creditBlock + entryType = decrementLedgerEntry.entryType + priceId = decrementLedgerEntry.priceId + eventId = decrementLedgerEntry.eventId + invoiceId = decrementLedgerEntry.invoiceId + additionalProperties = decrementLedgerEntry.additionalProperties.toMutableMap() } /** @@ -1288,130 +1348,103 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun eventId(eventId: String) = eventId(JsonField.of(eventId)) - @JsonProperty("event_id") - @ExcludeMissing fun eventId(eventId: JsonField) = apply { this.eventId = eventId } fun invoiceId(invoiceId: String) = invoiceId(JsonField.of(invoiceId)) - @JsonProperty("invoice_id") - @ExcludeMissing fun invoiceId(invoiceId: JsonField) = apply { this.invoiceId = invoiceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): DecrementLedgerEntry = DecrementLedgerEntry( metadata, @@ -1434,18 +1467,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -1466,6 +1504,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -1491,22 +1531,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -1514,20 +1550,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1535,6 +1568,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -1562,17 +1603,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -1588,6 +1632,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -1611,34 +1657,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1646,6 +1687,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -1785,19 +1834,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -1817,17 +1867,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1835,6 +1884,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1873,29 +1930,54 @@ private constructor( "DecrementLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, priceId=$priceId, eventId=$eventId, invoiceId=$invoiceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ExpirationChangeLedgerEntry.Builder::class) @NoAutoDetect class ExpirationChangeLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val newBlockExpiryDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("new_block_expiry_date") + @ExcludeMissing + private val newBlockExpiryDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -1973,6 +2055,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ExpirationChangeLedgerEntry = apply { if (!validated) { metadata().validate() @@ -2020,21 +2104,22 @@ private constructor( @JvmSynthetic internal fun from(expirationChangeLedgerEntry: ExpirationChangeLedgerEntry) = apply { - this.metadata = expirationChangeLedgerEntry.metadata - this.id = expirationChangeLedgerEntry.id - this.ledgerSequenceNumber = expirationChangeLedgerEntry.ledgerSequenceNumber - this.entryStatus = expirationChangeLedgerEntry.entryStatus - this.customer = expirationChangeLedgerEntry.customer - this.startingBalance = expirationChangeLedgerEntry.startingBalance - this.endingBalance = expirationChangeLedgerEntry.endingBalance - this.amount = expirationChangeLedgerEntry.amount - this.currency = expirationChangeLedgerEntry.currency - this.createdAt = expirationChangeLedgerEntry.createdAt - this.description = expirationChangeLedgerEntry.description - this.creditBlock = expirationChangeLedgerEntry.creditBlock - this.entryType = expirationChangeLedgerEntry.entryType - this.newBlockExpiryDate = expirationChangeLedgerEntry.newBlockExpiryDate - additionalProperties(expirationChangeLedgerEntry.additionalProperties) + metadata = expirationChangeLedgerEntry.metadata + id = expirationChangeLedgerEntry.id + ledgerSequenceNumber = expirationChangeLedgerEntry.ledgerSequenceNumber + entryStatus = expirationChangeLedgerEntry.entryStatus + customer = expirationChangeLedgerEntry.customer + startingBalance = expirationChangeLedgerEntry.startingBalance + endingBalance = expirationChangeLedgerEntry.endingBalance + amount = expirationChangeLedgerEntry.amount + currency = expirationChangeLedgerEntry.currency + createdAt = expirationChangeLedgerEntry.createdAt + description = expirationChangeLedgerEntry.description + creditBlock = expirationChangeLedgerEntry.creditBlock + entryType = expirationChangeLedgerEntry.entryType + newBlockExpiryDate = expirationChangeLedgerEntry.newBlockExpiryDate + additionalProperties = + expirationChangeLedgerEntry.additionalProperties.toMutableMap() } /** @@ -2049,121 +2134,98 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun newBlockExpiryDate(newBlockExpiryDate: OffsetDateTime) = newBlockExpiryDate(JsonField.of(newBlockExpiryDate)) - @JsonProperty("new_block_expiry_date") - @ExcludeMissing fun newBlockExpiryDate(newBlockExpiryDate: JsonField) = apply { this.newBlockExpiryDate = newBlockExpiryDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ExpirationChangeLedgerEntry = ExpirationChangeLedgerEntry( metadata, @@ -2184,18 +2246,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -2216,6 +2283,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -2241,22 +2310,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -2264,20 +2329,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2285,6 +2347,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -2312,17 +2382,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -2338,6 +2411,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -2361,34 +2436,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2396,6 +2466,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -2535,19 +2613,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -2567,17 +2646,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2585,6 +2663,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2623,28 +2709,51 @@ private constructor( "ExpirationChangeLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, newBlockExpiryDate=$newBlockExpiryDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = CreditBlockExpiryLedgerEntry.Builder::class) @NoAutoDetect class CreditBlockExpiryLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -2715,6 +2824,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlockExpiryLedgerEntry = apply { if (!validated) { metadata().validate() @@ -2760,20 +2871,21 @@ private constructor( @JvmSynthetic internal fun from(creditBlockExpiryLedgerEntry: CreditBlockExpiryLedgerEntry) = apply { - this.metadata = creditBlockExpiryLedgerEntry.metadata - this.id = creditBlockExpiryLedgerEntry.id - this.ledgerSequenceNumber = creditBlockExpiryLedgerEntry.ledgerSequenceNumber - this.entryStatus = creditBlockExpiryLedgerEntry.entryStatus - this.customer = creditBlockExpiryLedgerEntry.customer - this.startingBalance = creditBlockExpiryLedgerEntry.startingBalance - this.endingBalance = creditBlockExpiryLedgerEntry.endingBalance - this.amount = creditBlockExpiryLedgerEntry.amount - this.currency = creditBlockExpiryLedgerEntry.currency - this.createdAt = creditBlockExpiryLedgerEntry.createdAt - this.description = creditBlockExpiryLedgerEntry.description - this.creditBlock = creditBlockExpiryLedgerEntry.creditBlock - this.entryType = creditBlockExpiryLedgerEntry.entryType - additionalProperties(creditBlockExpiryLedgerEntry.additionalProperties) + metadata = creditBlockExpiryLedgerEntry.metadata + id = creditBlockExpiryLedgerEntry.id + ledgerSequenceNumber = creditBlockExpiryLedgerEntry.ledgerSequenceNumber + entryStatus = creditBlockExpiryLedgerEntry.entryStatus + customer = creditBlockExpiryLedgerEntry.customer + startingBalance = creditBlockExpiryLedgerEntry.startingBalance + endingBalance = creditBlockExpiryLedgerEntry.endingBalance + amount = creditBlockExpiryLedgerEntry.amount + currency = creditBlockExpiryLedgerEntry.currency + createdAt = creditBlockExpiryLedgerEntry.createdAt + description = creditBlockExpiryLedgerEntry.description + creditBlock = creditBlockExpiryLedgerEntry.creditBlock + entryType = creditBlockExpiryLedgerEntry.entryType + additionalProperties = + creditBlockExpiryLedgerEntry.additionalProperties.toMutableMap() } /** @@ -2788,112 +2900,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlockExpiryLedgerEntry = CreditBlockExpiryLedgerEntry( metadata, @@ -2913,18 +3004,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -2945,6 +3041,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -2970,22 +3068,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -2993,20 +3087,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3014,6 +3105,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -3041,17 +3140,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -3067,6 +3169,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -3090,34 +3194,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3125,6 +3224,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -3264,19 +3371,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -3296,17 +3404,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3314,6 +3421,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -3352,30 +3467,57 @@ private constructor( "CreditBlockExpiryLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = VoidLedgerEntry.Builder::class) @NoAutoDetect class VoidLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val voidReason: JsonField, - private val voidAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("void_reason") + @ExcludeMissing + private val voidReason: JsonField = JsonMissing.of(), + @JsonProperty("void_amount") + @ExcludeMissing + private val voidAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -3455,6 +3597,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): VoidLedgerEntry = apply { if (!validated) { metadata().validate() @@ -3504,22 +3648,22 @@ private constructor( @JvmSynthetic internal fun from(voidLedgerEntry: VoidLedgerEntry) = apply { - this.metadata = voidLedgerEntry.metadata - this.id = voidLedgerEntry.id - this.ledgerSequenceNumber = voidLedgerEntry.ledgerSequenceNumber - this.entryStatus = voidLedgerEntry.entryStatus - this.customer = voidLedgerEntry.customer - this.startingBalance = voidLedgerEntry.startingBalance - this.endingBalance = voidLedgerEntry.endingBalance - this.amount = voidLedgerEntry.amount - this.currency = voidLedgerEntry.currency - this.createdAt = voidLedgerEntry.createdAt - this.description = voidLedgerEntry.description - this.creditBlock = voidLedgerEntry.creditBlock - this.entryType = voidLedgerEntry.entryType - this.voidReason = voidLedgerEntry.voidReason - this.voidAmount = voidLedgerEntry.voidAmount - additionalProperties(voidLedgerEntry.additionalProperties) + metadata = voidLedgerEntry.metadata + id = voidLedgerEntry.id + ledgerSequenceNumber = voidLedgerEntry.ledgerSequenceNumber + entryStatus = voidLedgerEntry.entryStatus + customer = voidLedgerEntry.customer + startingBalance = voidLedgerEntry.startingBalance + endingBalance = voidLedgerEntry.endingBalance + amount = voidLedgerEntry.amount + currency = voidLedgerEntry.currency + createdAt = voidLedgerEntry.createdAt + description = voidLedgerEntry.description + creditBlock = voidLedgerEntry.creditBlock + entryType = voidLedgerEntry.entryType + voidReason = voidLedgerEntry.voidReason + voidAmount = voidLedgerEntry.voidAmount + additionalProperties = voidLedgerEntry.additionalProperties.toMutableMap() } /** @@ -3534,124 +3678,99 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun voidReason(voidReason: String) = voidReason(JsonField.of(voidReason)) - @JsonProperty("void_reason") - @ExcludeMissing fun voidReason(voidReason: JsonField) = apply { this.voidReason = voidReason } fun voidAmount(voidAmount: Double) = voidAmount(JsonField.of(voidAmount)) - @JsonProperty("void_amount") - @ExcludeMissing fun voidAmount(voidAmount: JsonField) = apply { this.voidAmount = voidAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): VoidLedgerEntry = VoidLedgerEntry( metadata, @@ -3673,18 +3792,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -3705,6 +3829,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -3730,22 +3856,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -3753,20 +3875,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3774,6 +3893,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -3801,17 +3928,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -3827,6 +3957,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -3850,34 +3982,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3885,6 +4012,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -4024,19 +4159,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4056,17 +4192,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4074,6 +4209,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4112,31 +4255,60 @@ private constructor( "VoidLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, voidReason=$voidReason, voidAmount=$voidAmount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = VoidInitiatedLedgerEntry.Builder::class) @NoAutoDetect class VoidInitiatedLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val newBlockExpiryDate: JsonField, - private val voidReason: JsonField, - private val voidAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("new_block_expiry_date") + @ExcludeMissing + private val newBlockExpiryDate: JsonField = JsonMissing.of(), + @JsonProperty("void_reason") + @ExcludeMissing + private val voidReason: JsonField = JsonMissing.of(), + @JsonProperty("void_amount") + @ExcludeMissing + private val voidAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -4223,6 +4395,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): VoidInitiatedLedgerEntry = apply { if (!validated) { metadata().validate() @@ -4274,23 +4448,23 @@ private constructor( @JvmSynthetic internal fun from(voidInitiatedLedgerEntry: VoidInitiatedLedgerEntry) = apply { - this.metadata = voidInitiatedLedgerEntry.metadata - this.id = voidInitiatedLedgerEntry.id - this.ledgerSequenceNumber = voidInitiatedLedgerEntry.ledgerSequenceNumber - this.entryStatus = voidInitiatedLedgerEntry.entryStatus - this.customer = voidInitiatedLedgerEntry.customer - this.startingBalance = voidInitiatedLedgerEntry.startingBalance - this.endingBalance = voidInitiatedLedgerEntry.endingBalance - this.amount = voidInitiatedLedgerEntry.amount - this.currency = voidInitiatedLedgerEntry.currency - this.createdAt = voidInitiatedLedgerEntry.createdAt - this.description = voidInitiatedLedgerEntry.description - this.creditBlock = voidInitiatedLedgerEntry.creditBlock - this.entryType = voidInitiatedLedgerEntry.entryType - this.newBlockExpiryDate = voidInitiatedLedgerEntry.newBlockExpiryDate - this.voidReason = voidInitiatedLedgerEntry.voidReason - this.voidAmount = voidInitiatedLedgerEntry.voidAmount - additionalProperties(voidInitiatedLedgerEntry.additionalProperties) + metadata = voidInitiatedLedgerEntry.metadata + id = voidInitiatedLedgerEntry.id + ledgerSequenceNumber = voidInitiatedLedgerEntry.ledgerSequenceNumber + entryStatus = voidInitiatedLedgerEntry.entryStatus + customer = voidInitiatedLedgerEntry.customer + startingBalance = voidInitiatedLedgerEntry.startingBalance + endingBalance = voidInitiatedLedgerEntry.endingBalance + amount = voidInitiatedLedgerEntry.amount + currency = voidInitiatedLedgerEntry.currency + createdAt = voidInitiatedLedgerEntry.createdAt + description = voidInitiatedLedgerEntry.description + creditBlock = voidInitiatedLedgerEntry.creditBlock + entryType = voidInitiatedLedgerEntry.entryType + newBlockExpiryDate = voidInitiatedLedgerEntry.newBlockExpiryDate + voidReason = voidInitiatedLedgerEntry.voidReason + voidAmount = voidInitiatedLedgerEntry.voidAmount + additionalProperties = voidInitiatedLedgerEntry.additionalProperties.toMutableMap() } /** @@ -4305,133 +4479,106 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun newBlockExpiryDate(newBlockExpiryDate: OffsetDateTime) = newBlockExpiryDate(JsonField.of(newBlockExpiryDate)) - @JsonProperty("new_block_expiry_date") - @ExcludeMissing fun newBlockExpiryDate(newBlockExpiryDate: JsonField) = apply { this.newBlockExpiryDate = newBlockExpiryDate } fun voidReason(voidReason: String) = voidReason(JsonField.of(voidReason)) - @JsonProperty("void_reason") - @ExcludeMissing fun voidReason(voidReason: JsonField) = apply { this.voidReason = voidReason } fun voidAmount(voidAmount: Double) = voidAmount(JsonField.of(voidAmount)) - @JsonProperty("void_amount") - @ExcludeMissing fun voidAmount(voidAmount: JsonField) = apply { this.voidAmount = voidAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): VoidInitiatedLedgerEntry = VoidInitiatedLedgerEntry( metadata, @@ -4454,18 +4601,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -4486,6 +4638,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -4511,22 +4665,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -4534,20 +4684,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4555,6 +4702,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -4582,17 +4737,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -4608,6 +4766,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -4631,34 +4791,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4666,6 +4821,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -4805,19 +4968,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4837,17 +5001,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4855,6 +5018,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4893,28 +5064,51 @@ private constructor( "VoidInitiatedLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, newBlockExpiryDate=$newBlockExpiryDate, voidReason=$voidReason, voidAmount=$voidAmount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AmendmentLedgerEntry.Builder::class) @NoAutoDetect class AmendmentLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -4985,6 +5179,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmendmentLedgerEntry = apply { if (!validated) { metadata().validate() @@ -5030,20 +5226,20 @@ private constructor( @JvmSynthetic internal fun from(amendmentLedgerEntry: AmendmentLedgerEntry) = apply { - this.metadata = amendmentLedgerEntry.metadata - this.id = amendmentLedgerEntry.id - this.ledgerSequenceNumber = amendmentLedgerEntry.ledgerSequenceNumber - this.entryStatus = amendmentLedgerEntry.entryStatus - this.customer = amendmentLedgerEntry.customer - this.startingBalance = amendmentLedgerEntry.startingBalance - this.endingBalance = amendmentLedgerEntry.endingBalance - this.amount = amendmentLedgerEntry.amount - this.currency = amendmentLedgerEntry.currency - this.createdAt = amendmentLedgerEntry.createdAt - this.description = amendmentLedgerEntry.description - this.creditBlock = amendmentLedgerEntry.creditBlock - this.entryType = amendmentLedgerEntry.entryType - additionalProperties(amendmentLedgerEntry.additionalProperties) + metadata = amendmentLedgerEntry.metadata + id = amendmentLedgerEntry.id + ledgerSequenceNumber = amendmentLedgerEntry.ledgerSequenceNumber + entryStatus = amendmentLedgerEntry.entryStatus + customer = amendmentLedgerEntry.customer + startingBalance = amendmentLedgerEntry.startingBalance + endingBalance = amendmentLedgerEntry.endingBalance + amount = amendmentLedgerEntry.amount + currency = amendmentLedgerEntry.currency + createdAt = amendmentLedgerEntry.createdAt + description = amendmentLedgerEntry.description + creditBlock = amendmentLedgerEntry.creditBlock + entryType = amendmentLedgerEntry.entryType + additionalProperties = amendmentLedgerEntry.additionalProperties.toMutableMap() } /** @@ -5058,112 +5254,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmendmentLedgerEntry = AmendmentLedgerEntry( metadata, @@ -5183,18 +5358,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -5215,6 +5395,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -5240,22 +5422,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -5263,20 +5441,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5284,6 +5459,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -5311,17 +5494,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -5337,6 +5523,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -5360,34 +5548,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5395,6 +5578,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -5534,19 +5725,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -5566,17 +5758,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5584,6 +5775,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryParams.kt index 11496b97..bdbcf703 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryParams.kt @@ -23,6 +23,7 @@ import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.LocalDate @@ -642,20 +643,21 @@ constructor( ) } - @JsonDeserialize(builder = AddIncrementCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddIncrementCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val amount: Double?, - private val expiryDate: OffsetDateTime?, - private val effectiveDate: OffsetDateTime?, - private val perUnitCostBasis: String?, - private val invoiceSettings: InvoiceSettings?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("amount") private val amount: Double, + @JsonProperty("expiry_date") private val expiryDate: OffsetDateTime?, + @JsonProperty("effective_date") private val effectiveDate: OffsetDateTime?, + @JsonProperty("per_unit_cost_basis") private val perUnitCostBasis: String?, + @JsonProperty("invoice_settings") private val invoiceSettings: InvoiceSettings?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -663,50 +665,55 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Double = amount /** An ISO 8601 format date that denotes when this credit balance should expire. */ - @JsonProperty("expiry_date") fun expiryDate(): OffsetDateTime? = expiryDate + @JsonProperty("expiry_date") + fun expiryDate(): Optional = Optional.ofNullable(expiryDate) /** * An ISO 8601 format date that denotes when this credit balance should become available for * use. */ - @JsonProperty("effective_date") fun effectiveDate(): OffsetDateTime? = effectiveDate + @JsonProperty("effective_date") + fun effectiveDate(): Optional = Optional.ofNullable(effectiveDate) /** * Can only be specified when entry_type=increment. How much, in the customer's currency, a * customer paid for a single credit in this block */ - @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(): String? = perUnitCostBasis + @JsonProperty("per_unit_cost_basis") + fun perUnitCostBasis(): Optional = Optional.ofNullable(perUnitCostBasis) /** * Passing `invoice_settings` automatically generates an invoice for the newly added * credits. If `invoice_settings` is passed, you must specify per_unit_cost_basis, as the * calculation of the invoice total is done on that basis. */ - @JsonProperty("invoice_settings") fun invoiceSettings(): InvoiceSettings? = invoiceSettings + @JsonProperty("invoice_settings") + fun invoiceSettings(): Optional = Optional.ofNullable(invoiceSettings) @JsonAnyGetter @ExcludeMissing @@ -737,18 +744,17 @@ constructor( addIncrementCreditLedgerEntryRequestParams: AddIncrementCreditLedgerEntryRequestParams ) = apply { - this.metadata = addIncrementCreditLedgerEntryRequestParams.metadata - this.currency = addIncrementCreditLedgerEntryRequestParams.currency - this.description = addIncrementCreditLedgerEntryRequestParams.description - this.entryType = addIncrementCreditLedgerEntryRequestParams.entryType - this.amount = addIncrementCreditLedgerEntryRequestParams.amount - this.expiryDate = addIncrementCreditLedgerEntryRequestParams.expiryDate - this.effectiveDate = addIncrementCreditLedgerEntryRequestParams.effectiveDate - this.perUnitCostBasis = addIncrementCreditLedgerEntryRequestParams.perUnitCostBasis - this.invoiceSettings = addIncrementCreditLedgerEntryRequestParams.invoiceSettings - additionalProperties( - addIncrementCreditLedgerEntryRequestParams.additionalProperties - ) + metadata = addIncrementCreditLedgerEntryRequestParams.metadata + currency = addIncrementCreditLedgerEntryRequestParams.currency + description = addIncrementCreditLedgerEntryRequestParams.description + entryType = addIncrementCreditLedgerEntryRequestParams.entryType + amount = addIncrementCreditLedgerEntryRequestParams.amount + expiryDate = addIncrementCreditLedgerEntryRequestParams.expiryDate + effectiveDate = addIncrementCreditLedgerEntryRequestParams.effectiveDate + perUnitCostBasis = addIncrementCreditLedgerEntryRequestParams.perUnitCostBasis + invoiceSettings = addIncrementCreditLedgerEntryRequestParams.invoiceSettings + additionalProperties = + addIncrementCreditLedgerEntryRequestParams.additionalProperties.toMutableMap() } /** @@ -756,14 +762,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -771,27 +775,23 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } /** An ISO 8601 format date that denotes when this credit balance should expire. */ - @JsonProperty("expiry_date") fun expiryDate(expiryDate: OffsetDateTime) = apply { this.expiryDate = expiryDate } /** * An ISO 8601 format date that denotes when this credit balance should become available * for use. */ - @JsonProperty("effective_date") fun effectiveDate(effectiveDate: OffsetDateTime) = apply { this.effectiveDate = effectiveDate } @@ -800,7 +800,6 @@ constructor( * Can only be specified when entry_type=increment. How much, in the customer's * currency, a customer paid for a single credit in this block */ - @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(perUnitCostBasis: String) = apply { this.perUnitCostBasis = perUnitCostBasis } @@ -810,25 +809,29 @@ constructor( * credits. If `invoice_settings` is passed, you must specify per_unit_cost_basis, as * the calculation of the invoice total is done on that basis. */ - @JsonProperty("invoice_settings") fun invoiceSettings(invoiceSettings: InvoiceSettings) = apply { this.invoiceSettings = invoiceSettings } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddIncrementCreditLedgerEntryRequestParams = AddIncrementCreditLedgerEntryRequestParams( metadata, @@ -900,38 +903,41 @@ constructor( * credits. If `invoice_settings` is passed, you must specify per_unit_cost_basis, as the * calculation of the invoice total is done on that basis. */ - @JsonDeserialize(builder = InvoiceSettings.Builder::class) @NoAutoDetect class InvoiceSettings + @JsonCreator private constructor( - private val autoCollection: Boolean?, - private val netTerms: Long?, - private val memo: String?, + @JsonProperty("auto_collection") private val autoCollection: Boolean, + @JsonProperty("net_terms") private val netTerms: Long, + @JsonProperty("memo") private val memo: String?, + @JsonProperty("require_successful_payment") private val requireSuccessfulPayment: Boolean?, - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") fun autoCollection(): Boolean = autoCollection /** * The net terms determines the difference between the invoice date and the issue date * for the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") fun netTerms(): Long? = netTerms + @JsonProperty("net_terms") fun netTerms(): Long = netTerms /** An optional memo to display on the invoice. */ - @JsonProperty("memo") fun memo(): String? = memo + @JsonProperty("memo") fun memo(): Optional = Optional.ofNullable(memo) /** * If true, the new credit block will require that the corresponding invoice is paid * before it can be drawn down from. */ @JsonProperty("require_successful_payment") - fun requireSuccessfulPayment(): Boolean? = requireSuccessfulPayment + fun requireSuccessfulPayment(): Optional = + Optional.ofNullable(requireSuccessfulPayment) @JsonAnyGetter @ExcludeMissing @@ -954,18 +960,17 @@ constructor( @JvmSynthetic internal fun from(invoiceSettings: InvoiceSettings) = apply { - this.autoCollection = invoiceSettings.autoCollection - this.netTerms = invoiceSettings.netTerms - this.memo = invoiceSettings.memo - this.requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment - additionalProperties(invoiceSettings.additionalProperties) + autoCollection = invoiceSettings.autoCollection + netTerms = invoiceSettings.netTerms + memo = invoiceSettings.memo + requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment + additionalProperties = invoiceSettings.additionalProperties.toMutableMap() } /** * Whether the credits purchase invoice should auto collect with the customer's * saved payment method. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } @@ -975,29 +980,26 @@ constructor( * date for the invoice. If you intend the invoice to be due on issue, set this * to 0. */ - @JsonProperty("net_terms") fun netTerms(netTerms: Long) = apply { this.netTerms = netTerms } /** An optional memo to display on the invoice. */ - @JsonProperty("memo") fun memo(memo: String) = apply { this.memo = memo } + fun memo(memo: String) = apply { this.memo = memo } /** * If true, the new credit block will require that the corresponding invoice is paid * before it can be drawn down from. */ - @JsonProperty("require_successful_payment") fun requireSuccessfulPayment(requireSuccessfulPayment: Boolean) = apply { this.requireSuccessfulPayment = requireSuccessfulPayment } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1005,6 +1007,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceSettings = InvoiceSettings( checkNotNull(autoCollection) { @@ -1040,11 +1050,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1064,17 +1075,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1082,6 +1092,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1120,16 +1138,17 @@ constructor( "AddIncrementCreditLedgerEntryRequestParams{metadata=$metadata, currency=$currency, description=$description, entryType=$entryType, amount=$amount, expiryDate=$expiryDate, effectiveDate=$effectiveDate, perUnitCostBasis=$perUnitCostBasis, invoiceSettings=$invoiceSettings, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddDecrementCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddDecrementCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val amount: Double?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("amount") private val amount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -1137,28 +1156,29 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Double = amount @JsonAnyGetter @ExcludeMissing @@ -1185,14 +1205,13 @@ constructor( addDecrementCreditLedgerEntryRequestParams: AddDecrementCreditLedgerEntryRequestParams ) = apply { - this.metadata = addDecrementCreditLedgerEntryRequestParams.metadata - this.currency = addDecrementCreditLedgerEntryRequestParams.currency - this.description = addDecrementCreditLedgerEntryRequestParams.description - this.entryType = addDecrementCreditLedgerEntryRequestParams.entryType - this.amount = addDecrementCreditLedgerEntryRequestParams.amount - additionalProperties( - addDecrementCreditLedgerEntryRequestParams.additionalProperties - ) + metadata = addDecrementCreditLedgerEntryRequestParams.metadata + currency = addDecrementCreditLedgerEntryRequestParams.currency + description = addDecrementCreditLedgerEntryRequestParams.description + entryType = addDecrementCreditLedgerEntryRequestParams.entryType + amount = addDecrementCreditLedgerEntryRequestParams.amount + additionalProperties = + addDecrementCreditLedgerEntryRequestParams.additionalProperties.toMutableMap() } /** @@ -1200,14 +1219,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -1215,32 +1232,35 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddDecrementCreditLedgerEntryRequestParams = AddDecrementCreditLedgerEntryRequestParams( metadata, @@ -1308,11 +1328,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1332,17 +1353,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1350,6 +1370,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1388,19 +1416,20 @@ constructor( "AddDecrementCreditLedgerEntryRequestParams{metadata=$metadata, currency=$currency, description=$description, entryType=$entryType, amount=$amount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddExpirationChangeCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddExpirationChangeCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val amount: Double?, - private val expiryDate: OffsetDateTime?, - private val blockId: String?, - private val targetExpiryDate: LocalDate?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("amount") private val amount: Double?, + @JsonProperty("expiry_date") private val expiryDate: OffsetDateTime?, + @JsonProperty("block_id") private val blockId: String?, + @JsonProperty("target_expiry_date") private val targetExpiryDate: LocalDate, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -1408,43 +1437,45 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Optional = Optional.ofNullable(amount) /** An ISO 8601 format date that identifies the origination credit block to expire */ - @JsonProperty("expiry_date") fun expiryDate(): OffsetDateTime? = expiryDate + @JsonProperty("expiry_date") + fun expiryDate(): Optional = Optional.ofNullable(expiryDate) /** * The ID of the block affected by an expiration_change, used to differentiate between * multiple blocks with the same `expiry_date`. */ - @JsonProperty("block_id") fun blockId(): String? = blockId + @JsonProperty("block_id") fun blockId(): Optional = Optional.ofNullable(blockId) /** * A future date (specified in YYYY-MM-DD format) used for expiration change, denoting when * credits transferred (as part of a partial block expiration) should expire. */ - @JsonProperty("target_expiry_date") fun targetExpiryDate(): LocalDate? = targetExpiryDate + @JsonProperty("target_expiry_date") fun targetExpiryDate(): LocalDate = targetExpiryDate @JsonAnyGetter @ExcludeMissing @@ -1474,18 +1505,18 @@ constructor( addExpirationChangeCreditLedgerEntryRequestParams: AddExpirationChangeCreditLedgerEntryRequestParams ) = apply { - this.metadata = addExpirationChangeCreditLedgerEntryRequestParams.metadata - this.currency = addExpirationChangeCreditLedgerEntryRequestParams.currency - this.description = addExpirationChangeCreditLedgerEntryRequestParams.description - this.entryType = addExpirationChangeCreditLedgerEntryRequestParams.entryType - this.amount = addExpirationChangeCreditLedgerEntryRequestParams.amount - this.expiryDate = addExpirationChangeCreditLedgerEntryRequestParams.expiryDate - this.blockId = addExpirationChangeCreditLedgerEntryRequestParams.blockId - this.targetExpiryDate = + metadata = addExpirationChangeCreditLedgerEntryRequestParams.metadata + currency = addExpirationChangeCreditLedgerEntryRequestParams.currency + description = addExpirationChangeCreditLedgerEntryRequestParams.description + entryType = addExpirationChangeCreditLedgerEntryRequestParams.entryType + amount = addExpirationChangeCreditLedgerEntryRequestParams.amount + expiryDate = addExpirationChangeCreditLedgerEntryRequestParams.expiryDate + blockId = addExpirationChangeCreditLedgerEntryRequestParams.blockId + targetExpiryDate = addExpirationChangeCreditLedgerEntryRequestParams.targetExpiryDate - additionalProperties( + additionalProperties = addExpirationChangeCreditLedgerEntryRequestParams.additionalProperties - ) + .toMutableMap() } /** @@ -1493,14 +1524,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -1508,52 +1537,52 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } /** An ISO 8601 format date that identifies the origination credit block to expire */ - @JsonProperty("expiry_date") fun expiryDate(expiryDate: OffsetDateTime) = apply { this.expiryDate = expiryDate } /** * The ID of the block affected by an expiration_change, used to differentiate between * multiple blocks with the same `expiry_date`. */ - @JsonProperty("block_id") fun blockId(blockId: String) = apply { this.blockId = blockId } /** * A future date (specified in YYYY-MM-DD format) used for expiration change, denoting * when credits transferred (as part of a partial block expiration) should expire. */ - @JsonProperty("target_expiry_date") fun targetExpiryDate(targetExpiryDate: LocalDate) = apply { this.targetExpiryDate = targetExpiryDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddExpirationChangeCreditLedgerEntryRequestParams = AddExpirationChangeCreditLedgerEntryRequestParams( metadata, @@ -1626,11 +1655,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1650,17 +1680,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1668,6 +1697,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1706,18 +1743,19 @@ constructor( "AddExpirationChangeCreditLedgerEntryRequestParams{metadata=$metadata, currency=$currency, description=$description, entryType=$entryType, amount=$amount, expiryDate=$expiryDate, blockId=$blockId, targetExpiryDate=$targetExpiryDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddVoidCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddVoidCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val blockId: String?, - private val voidReason: VoidReason?, - private val amount: Double?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("block_id") private val blockId: String, + @JsonProperty("void_reason") private val voidReason: VoidReason?, + @JsonProperty("amount") private val amount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -1725,34 +1763,36 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** The ID of the block to void. */ - @JsonProperty("block_id") fun blockId(): String? = blockId + @JsonProperty("block_id") fun blockId(): String = blockId /** Can only be specified when `entry_type=void`. The reason for the void. */ - @JsonProperty("void_reason") fun voidReason(): VoidReason? = voidReason + @JsonProperty("void_reason") + fun voidReason(): Optional = Optional.ofNullable(voidReason) /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Double = amount @JsonAnyGetter @ExcludeMissing @@ -1780,14 +1820,15 @@ constructor( internal fun from( addVoidCreditLedgerEntryRequestParams: AddVoidCreditLedgerEntryRequestParams ) = apply { - this.metadata = addVoidCreditLedgerEntryRequestParams.metadata - this.currency = addVoidCreditLedgerEntryRequestParams.currency - this.description = addVoidCreditLedgerEntryRequestParams.description - this.entryType = addVoidCreditLedgerEntryRequestParams.entryType - this.blockId = addVoidCreditLedgerEntryRequestParams.blockId - this.voidReason = addVoidCreditLedgerEntryRequestParams.voidReason - this.amount = addVoidCreditLedgerEntryRequestParams.amount - additionalProperties(addVoidCreditLedgerEntryRequestParams.additionalProperties) + metadata = addVoidCreditLedgerEntryRequestParams.metadata + currency = addVoidCreditLedgerEntryRequestParams.currency + description = addVoidCreditLedgerEntryRequestParams.description + entryType = addVoidCreditLedgerEntryRequestParams.entryType + blockId = addVoidCreditLedgerEntryRequestParams.blockId + voidReason = addVoidCreditLedgerEntryRequestParams.voidReason + amount = addVoidCreditLedgerEntryRequestParams.amount + additionalProperties = + addVoidCreditLedgerEntryRequestParams.additionalProperties.toMutableMap() } /** @@ -1795,14 +1836,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -1810,40 +1849,41 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** The ID of the block to void. */ - @JsonProperty("block_id") fun blockId(blockId: String) = apply { this.blockId = blockId } /** Can only be specified when `entry_type=void`. The reason for the void. */ - @JsonProperty("void_reason") fun voidReason(voidReason: VoidReason) = apply { this.voidReason = voidReason } /** * The number of credits to effect. Note that this is required for increment, decrement, * void, or undo operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddVoidCreditLedgerEntryRequestParams = AddVoidCreditLedgerEntryRequestParams( metadata, @@ -1913,11 +1953,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1937,17 +1978,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1955,6 +1995,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2044,17 +2092,18 @@ constructor( "AddVoidCreditLedgerEntryRequestParams{metadata=$metadata, currency=$currency, description=$description, entryType=$entryType, blockId=$blockId, voidReason=$voidReason, amount=$amount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddAmendmentCreditLedgerEntryRequestParams.Builder::class) @NoAutoDetect class AddAmendmentCreditLedgerEntryRequestParams + @JsonCreator private constructor( - private val metadata: Metadata?, - private val currency: String?, - private val description: String?, - private val entryType: EntryType?, - private val amount: Double?, - private val blockId: String?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("description") private val description: String?, + @JsonProperty("entry_type") private val entryType: EntryType, + @JsonProperty("amount") private val amount: Double, + @JsonProperty("block_id") private val blockId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -2062,31 +2111,32 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The currency or custom pricing unit to use for this ledger entry. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** * Optional metadata that can be specified when adding ledger results via the API. For * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) - @JsonProperty("entry_type") fun entryType(): EntryType? = entryType + @JsonProperty("entry_type") fun entryType(): EntryType = entryType /** * The number of credits to effect. Note that this is required for increment, decrement or * void operations. */ - @JsonProperty("amount") fun amount(): Double? = amount + @JsonProperty("amount") fun amount(): Double = amount /** The ID of the block to reverse a decrement from. */ - @JsonProperty("block_id") fun blockId(): String? = blockId + @JsonProperty("block_id") fun blockId(): String = blockId @JsonAnyGetter @ExcludeMissing @@ -2114,15 +2164,14 @@ constructor( addAmendmentCreditLedgerEntryRequestParams: AddAmendmentCreditLedgerEntryRequestParams ) = apply { - this.metadata = addAmendmentCreditLedgerEntryRequestParams.metadata - this.currency = addAmendmentCreditLedgerEntryRequestParams.currency - this.description = addAmendmentCreditLedgerEntryRequestParams.description - this.entryType = addAmendmentCreditLedgerEntryRequestParams.entryType - this.amount = addAmendmentCreditLedgerEntryRequestParams.amount - this.blockId = addAmendmentCreditLedgerEntryRequestParams.blockId - additionalProperties( - addAmendmentCreditLedgerEntryRequestParams.additionalProperties - ) + metadata = addAmendmentCreditLedgerEntryRequestParams.metadata + currency = addAmendmentCreditLedgerEntryRequestParams.currency + description = addAmendmentCreditLedgerEntryRequestParams.description + entryType = addAmendmentCreditLedgerEntryRequestParams.entryType + amount = addAmendmentCreditLedgerEntryRequestParams.amount + blockId = addAmendmentCreditLedgerEntryRequestParams.blockId + additionalProperties = + addAmendmentCreditLedgerEntryRequestParams.additionalProperties.toMutableMap() } /** @@ -2130,14 +2179,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The currency or custom pricing unit to use for this ledger entry. If this is a * real-world currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** @@ -2145,36 +2192,38 @@ constructor( * example, this can be used to note an increment refers to trial credits, or for noting * corrections as a result of an incident, etc. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } - @JsonProperty("entry_type") fun entryType(entryType: EntryType) = apply { this.entryType = entryType } /** * The number of credits to effect. Note that this is required for increment, decrement * or void operations. */ - @JsonProperty("amount") fun amount(amount: Double) = apply { this.amount = amount } + fun amount(amount: Double) = apply { this.amount = amount } /** The ID of the block to reverse a decrement from. */ - @JsonProperty("block_id") fun blockId(blockId: String) = apply { this.blockId = blockId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddAmendmentCreditLedgerEntryRequestParams = AddAmendmentCreditLedgerEntryRequestParams( metadata, @@ -2243,11 +2292,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -2267,17 +2317,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2285,6 +2334,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryResponse.kt index fd7c20f8..9b06de3a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerCreateEntryResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -357,28 +358,51 @@ private constructor( } } - @JsonDeserialize(builder = IncrementLedgerEntry.Builder::class) @NoAutoDetect class IncrementLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -449,6 +473,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): IncrementLedgerEntry = apply { if (!validated) { metadata().validate() @@ -494,20 +520,20 @@ private constructor( @JvmSynthetic internal fun from(incrementLedgerEntry: IncrementLedgerEntry) = apply { - this.metadata = incrementLedgerEntry.metadata - this.id = incrementLedgerEntry.id - this.ledgerSequenceNumber = incrementLedgerEntry.ledgerSequenceNumber - this.entryStatus = incrementLedgerEntry.entryStatus - this.customer = incrementLedgerEntry.customer - this.startingBalance = incrementLedgerEntry.startingBalance - this.endingBalance = incrementLedgerEntry.endingBalance - this.amount = incrementLedgerEntry.amount - this.currency = incrementLedgerEntry.currency - this.createdAt = incrementLedgerEntry.createdAt - this.description = incrementLedgerEntry.description - this.creditBlock = incrementLedgerEntry.creditBlock - this.entryType = incrementLedgerEntry.entryType - additionalProperties(incrementLedgerEntry.additionalProperties) + metadata = incrementLedgerEntry.metadata + id = incrementLedgerEntry.id + ledgerSequenceNumber = incrementLedgerEntry.ledgerSequenceNumber + entryStatus = incrementLedgerEntry.entryStatus + customer = incrementLedgerEntry.customer + startingBalance = incrementLedgerEntry.startingBalance + endingBalance = incrementLedgerEntry.endingBalance + amount = incrementLedgerEntry.amount + currency = incrementLedgerEntry.currency + createdAt = incrementLedgerEntry.createdAt + description = incrementLedgerEntry.description + creditBlock = incrementLedgerEntry.creditBlock + entryType = incrementLedgerEntry.entryType + additionalProperties = incrementLedgerEntry.additionalProperties.toMutableMap() } /** @@ -522,112 +548,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): IncrementLedgerEntry = IncrementLedgerEntry( metadata, @@ -647,18 +652,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -679,6 +689,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -704,22 +716,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -727,20 +735,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -748,6 +753,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -775,17 +788,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -801,6 +817,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -824,34 +842,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -859,6 +872,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -998,19 +1019,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -1030,17 +1052,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1048,6 +1069,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1086,31 +1115,60 @@ private constructor( "IncrementLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = DecrementLedgerEntry.Builder::class) @NoAutoDetect class DecrementLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val priceId: JsonField, - private val eventId: JsonField, - private val invoiceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("event_id") + @ExcludeMissing + private val eventId: JsonField = JsonMissing.of(), + @JsonProperty("invoice_id") + @ExcludeMissing + private val invoiceId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -1193,6 +1251,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): DecrementLedgerEntry = apply { if (!validated) { metadata().validate() @@ -1244,23 +1304,23 @@ private constructor( @JvmSynthetic internal fun from(decrementLedgerEntry: DecrementLedgerEntry) = apply { - this.metadata = decrementLedgerEntry.metadata - this.id = decrementLedgerEntry.id - this.ledgerSequenceNumber = decrementLedgerEntry.ledgerSequenceNumber - this.entryStatus = decrementLedgerEntry.entryStatus - this.customer = decrementLedgerEntry.customer - this.startingBalance = decrementLedgerEntry.startingBalance - this.endingBalance = decrementLedgerEntry.endingBalance - this.amount = decrementLedgerEntry.amount - this.currency = decrementLedgerEntry.currency - this.createdAt = decrementLedgerEntry.createdAt - this.description = decrementLedgerEntry.description - this.creditBlock = decrementLedgerEntry.creditBlock - this.entryType = decrementLedgerEntry.entryType - this.priceId = decrementLedgerEntry.priceId - this.eventId = decrementLedgerEntry.eventId - this.invoiceId = decrementLedgerEntry.invoiceId - additionalProperties(decrementLedgerEntry.additionalProperties) + metadata = decrementLedgerEntry.metadata + id = decrementLedgerEntry.id + ledgerSequenceNumber = decrementLedgerEntry.ledgerSequenceNumber + entryStatus = decrementLedgerEntry.entryStatus + customer = decrementLedgerEntry.customer + startingBalance = decrementLedgerEntry.startingBalance + endingBalance = decrementLedgerEntry.endingBalance + amount = decrementLedgerEntry.amount + currency = decrementLedgerEntry.currency + createdAt = decrementLedgerEntry.createdAt + description = decrementLedgerEntry.description + creditBlock = decrementLedgerEntry.creditBlock + entryType = decrementLedgerEntry.entryType + priceId = decrementLedgerEntry.priceId + eventId = decrementLedgerEntry.eventId + invoiceId = decrementLedgerEntry.invoiceId + additionalProperties = decrementLedgerEntry.additionalProperties.toMutableMap() } /** @@ -1275,130 +1335,103 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun eventId(eventId: String) = eventId(JsonField.of(eventId)) - @JsonProperty("event_id") - @ExcludeMissing fun eventId(eventId: JsonField) = apply { this.eventId = eventId } fun invoiceId(invoiceId: String) = invoiceId(JsonField.of(invoiceId)) - @JsonProperty("invoice_id") - @ExcludeMissing fun invoiceId(invoiceId: JsonField) = apply { this.invoiceId = invoiceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): DecrementLedgerEntry = DecrementLedgerEntry( metadata, @@ -1421,18 +1454,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -1453,6 +1491,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -1478,22 +1518,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -1501,20 +1537,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1522,6 +1555,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -1549,17 +1590,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -1575,6 +1619,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -1598,34 +1644,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1633,6 +1674,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -1772,19 +1821,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -1804,17 +1854,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1822,6 +1871,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1860,29 +1917,54 @@ private constructor( "DecrementLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, priceId=$priceId, eventId=$eventId, invoiceId=$invoiceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ExpirationChangeLedgerEntry.Builder::class) @NoAutoDetect class ExpirationChangeLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val newBlockExpiryDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("new_block_expiry_date") + @ExcludeMissing + private val newBlockExpiryDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -1960,6 +2042,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ExpirationChangeLedgerEntry = apply { if (!validated) { metadata().validate() @@ -2007,21 +2091,22 @@ private constructor( @JvmSynthetic internal fun from(expirationChangeLedgerEntry: ExpirationChangeLedgerEntry) = apply { - this.metadata = expirationChangeLedgerEntry.metadata - this.id = expirationChangeLedgerEntry.id - this.ledgerSequenceNumber = expirationChangeLedgerEntry.ledgerSequenceNumber - this.entryStatus = expirationChangeLedgerEntry.entryStatus - this.customer = expirationChangeLedgerEntry.customer - this.startingBalance = expirationChangeLedgerEntry.startingBalance - this.endingBalance = expirationChangeLedgerEntry.endingBalance - this.amount = expirationChangeLedgerEntry.amount - this.currency = expirationChangeLedgerEntry.currency - this.createdAt = expirationChangeLedgerEntry.createdAt - this.description = expirationChangeLedgerEntry.description - this.creditBlock = expirationChangeLedgerEntry.creditBlock - this.entryType = expirationChangeLedgerEntry.entryType - this.newBlockExpiryDate = expirationChangeLedgerEntry.newBlockExpiryDate - additionalProperties(expirationChangeLedgerEntry.additionalProperties) + metadata = expirationChangeLedgerEntry.metadata + id = expirationChangeLedgerEntry.id + ledgerSequenceNumber = expirationChangeLedgerEntry.ledgerSequenceNumber + entryStatus = expirationChangeLedgerEntry.entryStatus + customer = expirationChangeLedgerEntry.customer + startingBalance = expirationChangeLedgerEntry.startingBalance + endingBalance = expirationChangeLedgerEntry.endingBalance + amount = expirationChangeLedgerEntry.amount + currency = expirationChangeLedgerEntry.currency + createdAt = expirationChangeLedgerEntry.createdAt + description = expirationChangeLedgerEntry.description + creditBlock = expirationChangeLedgerEntry.creditBlock + entryType = expirationChangeLedgerEntry.entryType + newBlockExpiryDate = expirationChangeLedgerEntry.newBlockExpiryDate + additionalProperties = + expirationChangeLedgerEntry.additionalProperties.toMutableMap() } /** @@ -2036,121 +2121,98 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun newBlockExpiryDate(newBlockExpiryDate: OffsetDateTime) = newBlockExpiryDate(JsonField.of(newBlockExpiryDate)) - @JsonProperty("new_block_expiry_date") - @ExcludeMissing fun newBlockExpiryDate(newBlockExpiryDate: JsonField) = apply { this.newBlockExpiryDate = newBlockExpiryDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ExpirationChangeLedgerEntry = ExpirationChangeLedgerEntry( metadata, @@ -2171,18 +2233,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -2203,6 +2270,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -2228,22 +2297,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -2251,20 +2316,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2272,6 +2334,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -2299,17 +2369,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -2325,6 +2398,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -2348,34 +2423,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2383,6 +2453,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -2522,19 +2600,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -2554,17 +2633,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2572,6 +2650,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2610,28 +2696,51 @@ private constructor( "ExpirationChangeLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, newBlockExpiryDate=$newBlockExpiryDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = CreditBlockExpiryLedgerEntry.Builder::class) @NoAutoDetect class CreditBlockExpiryLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -2702,6 +2811,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlockExpiryLedgerEntry = apply { if (!validated) { metadata().validate() @@ -2747,20 +2858,21 @@ private constructor( @JvmSynthetic internal fun from(creditBlockExpiryLedgerEntry: CreditBlockExpiryLedgerEntry) = apply { - this.metadata = creditBlockExpiryLedgerEntry.metadata - this.id = creditBlockExpiryLedgerEntry.id - this.ledgerSequenceNumber = creditBlockExpiryLedgerEntry.ledgerSequenceNumber - this.entryStatus = creditBlockExpiryLedgerEntry.entryStatus - this.customer = creditBlockExpiryLedgerEntry.customer - this.startingBalance = creditBlockExpiryLedgerEntry.startingBalance - this.endingBalance = creditBlockExpiryLedgerEntry.endingBalance - this.amount = creditBlockExpiryLedgerEntry.amount - this.currency = creditBlockExpiryLedgerEntry.currency - this.createdAt = creditBlockExpiryLedgerEntry.createdAt - this.description = creditBlockExpiryLedgerEntry.description - this.creditBlock = creditBlockExpiryLedgerEntry.creditBlock - this.entryType = creditBlockExpiryLedgerEntry.entryType - additionalProperties(creditBlockExpiryLedgerEntry.additionalProperties) + metadata = creditBlockExpiryLedgerEntry.metadata + id = creditBlockExpiryLedgerEntry.id + ledgerSequenceNumber = creditBlockExpiryLedgerEntry.ledgerSequenceNumber + entryStatus = creditBlockExpiryLedgerEntry.entryStatus + customer = creditBlockExpiryLedgerEntry.customer + startingBalance = creditBlockExpiryLedgerEntry.startingBalance + endingBalance = creditBlockExpiryLedgerEntry.endingBalance + amount = creditBlockExpiryLedgerEntry.amount + currency = creditBlockExpiryLedgerEntry.currency + createdAt = creditBlockExpiryLedgerEntry.createdAt + description = creditBlockExpiryLedgerEntry.description + creditBlock = creditBlockExpiryLedgerEntry.creditBlock + entryType = creditBlockExpiryLedgerEntry.entryType + additionalProperties = + creditBlockExpiryLedgerEntry.additionalProperties.toMutableMap() } /** @@ -2775,112 +2887,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlockExpiryLedgerEntry = CreditBlockExpiryLedgerEntry( metadata, @@ -2900,18 +2991,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -2932,6 +3028,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -2957,22 +3055,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -2980,20 +3074,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3001,6 +3092,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -3028,17 +3127,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -3054,6 +3156,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -3077,34 +3181,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3112,6 +3211,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -3251,19 +3358,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -3283,17 +3391,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3301,6 +3408,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -3339,30 +3454,57 @@ private constructor( "CreditBlockExpiryLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = VoidLedgerEntry.Builder::class) @NoAutoDetect class VoidLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val voidReason: JsonField, - private val voidAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("void_reason") + @ExcludeMissing + private val voidReason: JsonField = JsonMissing.of(), + @JsonProperty("void_amount") + @ExcludeMissing + private val voidAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -3442,6 +3584,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): VoidLedgerEntry = apply { if (!validated) { metadata().validate() @@ -3491,22 +3635,22 @@ private constructor( @JvmSynthetic internal fun from(voidLedgerEntry: VoidLedgerEntry) = apply { - this.metadata = voidLedgerEntry.metadata - this.id = voidLedgerEntry.id - this.ledgerSequenceNumber = voidLedgerEntry.ledgerSequenceNumber - this.entryStatus = voidLedgerEntry.entryStatus - this.customer = voidLedgerEntry.customer - this.startingBalance = voidLedgerEntry.startingBalance - this.endingBalance = voidLedgerEntry.endingBalance - this.amount = voidLedgerEntry.amount - this.currency = voidLedgerEntry.currency - this.createdAt = voidLedgerEntry.createdAt - this.description = voidLedgerEntry.description - this.creditBlock = voidLedgerEntry.creditBlock - this.entryType = voidLedgerEntry.entryType - this.voidReason = voidLedgerEntry.voidReason - this.voidAmount = voidLedgerEntry.voidAmount - additionalProperties(voidLedgerEntry.additionalProperties) + metadata = voidLedgerEntry.metadata + id = voidLedgerEntry.id + ledgerSequenceNumber = voidLedgerEntry.ledgerSequenceNumber + entryStatus = voidLedgerEntry.entryStatus + customer = voidLedgerEntry.customer + startingBalance = voidLedgerEntry.startingBalance + endingBalance = voidLedgerEntry.endingBalance + amount = voidLedgerEntry.amount + currency = voidLedgerEntry.currency + createdAt = voidLedgerEntry.createdAt + description = voidLedgerEntry.description + creditBlock = voidLedgerEntry.creditBlock + entryType = voidLedgerEntry.entryType + voidReason = voidLedgerEntry.voidReason + voidAmount = voidLedgerEntry.voidAmount + additionalProperties = voidLedgerEntry.additionalProperties.toMutableMap() } /** @@ -3521,124 +3665,99 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun voidReason(voidReason: String) = voidReason(JsonField.of(voidReason)) - @JsonProperty("void_reason") - @ExcludeMissing fun voidReason(voidReason: JsonField) = apply { this.voidReason = voidReason } fun voidAmount(voidAmount: Double) = voidAmount(JsonField.of(voidAmount)) - @JsonProperty("void_amount") - @ExcludeMissing fun voidAmount(voidAmount: JsonField) = apply { this.voidAmount = voidAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): VoidLedgerEntry = VoidLedgerEntry( metadata, @@ -3660,18 +3779,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -3692,6 +3816,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -3717,22 +3843,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -3740,20 +3862,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3761,6 +3880,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -3788,17 +3915,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -3814,6 +3944,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -3837,34 +3969,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3872,6 +3999,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -4011,19 +4146,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4043,17 +4179,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4061,6 +4196,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4099,31 +4242,60 @@ private constructor( "VoidLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, voidReason=$voidReason, voidAmount=$voidAmount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = VoidInitiatedLedgerEntry.Builder::class) @NoAutoDetect class VoidInitiatedLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val newBlockExpiryDate: JsonField, - private val voidReason: JsonField, - private val voidAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("new_block_expiry_date") + @ExcludeMissing + private val newBlockExpiryDate: JsonField = JsonMissing.of(), + @JsonProperty("void_reason") + @ExcludeMissing + private val voidReason: JsonField = JsonMissing.of(), + @JsonProperty("void_amount") + @ExcludeMissing + private val voidAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -4210,6 +4382,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): VoidInitiatedLedgerEntry = apply { if (!validated) { metadata().validate() @@ -4261,23 +4435,23 @@ private constructor( @JvmSynthetic internal fun from(voidInitiatedLedgerEntry: VoidInitiatedLedgerEntry) = apply { - this.metadata = voidInitiatedLedgerEntry.metadata - this.id = voidInitiatedLedgerEntry.id - this.ledgerSequenceNumber = voidInitiatedLedgerEntry.ledgerSequenceNumber - this.entryStatus = voidInitiatedLedgerEntry.entryStatus - this.customer = voidInitiatedLedgerEntry.customer - this.startingBalance = voidInitiatedLedgerEntry.startingBalance - this.endingBalance = voidInitiatedLedgerEntry.endingBalance - this.amount = voidInitiatedLedgerEntry.amount - this.currency = voidInitiatedLedgerEntry.currency - this.createdAt = voidInitiatedLedgerEntry.createdAt - this.description = voidInitiatedLedgerEntry.description - this.creditBlock = voidInitiatedLedgerEntry.creditBlock - this.entryType = voidInitiatedLedgerEntry.entryType - this.newBlockExpiryDate = voidInitiatedLedgerEntry.newBlockExpiryDate - this.voidReason = voidInitiatedLedgerEntry.voidReason - this.voidAmount = voidInitiatedLedgerEntry.voidAmount - additionalProperties(voidInitiatedLedgerEntry.additionalProperties) + metadata = voidInitiatedLedgerEntry.metadata + id = voidInitiatedLedgerEntry.id + ledgerSequenceNumber = voidInitiatedLedgerEntry.ledgerSequenceNumber + entryStatus = voidInitiatedLedgerEntry.entryStatus + customer = voidInitiatedLedgerEntry.customer + startingBalance = voidInitiatedLedgerEntry.startingBalance + endingBalance = voidInitiatedLedgerEntry.endingBalance + amount = voidInitiatedLedgerEntry.amount + currency = voidInitiatedLedgerEntry.currency + createdAt = voidInitiatedLedgerEntry.createdAt + description = voidInitiatedLedgerEntry.description + creditBlock = voidInitiatedLedgerEntry.creditBlock + entryType = voidInitiatedLedgerEntry.entryType + newBlockExpiryDate = voidInitiatedLedgerEntry.newBlockExpiryDate + voidReason = voidInitiatedLedgerEntry.voidReason + voidAmount = voidInitiatedLedgerEntry.voidAmount + additionalProperties = voidInitiatedLedgerEntry.additionalProperties.toMutableMap() } /** @@ -4292,133 +4466,106 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun newBlockExpiryDate(newBlockExpiryDate: OffsetDateTime) = newBlockExpiryDate(JsonField.of(newBlockExpiryDate)) - @JsonProperty("new_block_expiry_date") - @ExcludeMissing fun newBlockExpiryDate(newBlockExpiryDate: JsonField) = apply { this.newBlockExpiryDate = newBlockExpiryDate } fun voidReason(voidReason: String) = voidReason(JsonField.of(voidReason)) - @JsonProperty("void_reason") - @ExcludeMissing fun voidReason(voidReason: JsonField) = apply { this.voidReason = voidReason } fun voidAmount(voidAmount: Double) = voidAmount(JsonField.of(voidAmount)) - @JsonProperty("void_amount") - @ExcludeMissing fun voidAmount(voidAmount: JsonField) = apply { this.voidAmount = voidAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): VoidInitiatedLedgerEntry = VoidInitiatedLedgerEntry( metadata, @@ -4441,18 +4588,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -4473,6 +4625,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -4498,22 +4652,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -4521,20 +4671,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4542,6 +4689,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -4569,17 +4724,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -4595,6 +4753,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -4618,34 +4778,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4653,6 +4808,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -4792,19 +4955,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4824,17 +4988,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4842,6 +5005,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4880,28 +5051,51 @@ private constructor( "VoidInitiatedLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, newBlockExpiryDate=$newBlockExpiryDate, voidReason=$voidReason, voidAmount=$voidAmount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AmendmentLedgerEntry.Builder::class) @NoAutoDetect class AmendmentLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -4972,6 +5166,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmendmentLedgerEntry = apply { if (!validated) { metadata().validate() @@ -5017,20 +5213,20 @@ private constructor( @JvmSynthetic internal fun from(amendmentLedgerEntry: AmendmentLedgerEntry) = apply { - this.metadata = amendmentLedgerEntry.metadata - this.id = amendmentLedgerEntry.id - this.ledgerSequenceNumber = amendmentLedgerEntry.ledgerSequenceNumber - this.entryStatus = amendmentLedgerEntry.entryStatus - this.customer = amendmentLedgerEntry.customer - this.startingBalance = amendmentLedgerEntry.startingBalance - this.endingBalance = amendmentLedgerEntry.endingBalance - this.amount = amendmentLedgerEntry.amount - this.currency = amendmentLedgerEntry.currency - this.createdAt = amendmentLedgerEntry.createdAt - this.description = amendmentLedgerEntry.description - this.creditBlock = amendmentLedgerEntry.creditBlock - this.entryType = amendmentLedgerEntry.entryType - additionalProperties(amendmentLedgerEntry.additionalProperties) + metadata = amendmentLedgerEntry.metadata + id = amendmentLedgerEntry.id + ledgerSequenceNumber = amendmentLedgerEntry.ledgerSequenceNumber + entryStatus = amendmentLedgerEntry.entryStatus + customer = amendmentLedgerEntry.customer + startingBalance = amendmentLedgerEntry.startingBalance + endingBalance = amendmentLedgerEntry.endingBalance + amount = amendmentLedgerEntry.amount + currency = amendmentLedgerEntry.currency + createdAt = amendmentLedgerEntry.createdAt + description = amendmentLedgerEntry.description + creditBlock = amendmentLedgerEntry.creditBlock + entryType = amendmentLedgerEntry.entryType + additionalProperties = amendmentLedgerEntry.additionalProperties.toMutableMap() } /** @@ -5045,112 +5241,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmendmentLedgerEntry = AmendmentLedgerEntry( metadata, @@ -5170,18 +5345,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -5202,6 +5382,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -5227,22 +5409,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -5250,20 +5428,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5271,6 +5446,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -5298,17 +5481,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -5324,6 +5510,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -5347,34 +5535,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5382,6 +5565,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -5521,19 +5712,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -5553,17 +5745,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5571,6 +5762,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdPage.kt index 62c23180..40cf37f3 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.customers.credits.LedgerService import java.util.Objects @@ -86,13 +87,17 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = + JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -160,7 +165,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -168,12 +172,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdPageAsync.kt index 1d3ac4b4..d9da161f 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.customers.credits.LedgerServiceAsync import java.util.Objects @@ -89,13 +90,17 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = + JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -163,7 +168,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -171,12 +175,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdResponse.kt index 542a6322..39165216 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListByExternalIdResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -368,28 +369,51 @@ private constructor( } } - @JsonDeserialize(builder = IncrementLedgerEntry.Builder::class) @NoAutoDetect class IncrementLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -460,6 +484,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): IncrementLedgerEntry = apply { if (!validated) { metadata().validate() @@ -505,20 +531,20 @@ private constructor( @JvmSynthetic internal fun from(incrementLedgerEntry: IncrementLedgerEntry) = apply { - this.metadata = incrementLedgerEntry.metadata - this.id = incrementLedgerEntry.id - this.ledgerSequenceNumber = incrementLedgerEntry.ledgerSequenceNumber - this.entryStatus = incrementLedgerEntry.entryStatus - this.customer = incrementLedgerEntry.customer - this.startingBalance = incrementLedgerEntry.startingBalance - this.endingBalance = incrementLedgerEntry.endingBalance - this.amount = incrementLedgerEntry.amount - this.currency = incrementLedgerEntry.currency - this.createdAt = incrementLedgerEntry.createdAt - this.description = incrementLedgerEntry.description - this.creditBlock = incrementLedgerEntry.creditBlock - this.entryType = incrementLedgerEntry.entryType - additionalProperties(incrementLedgerEntry.additionalProperties) + metadata = incrementLedgerEntry.metadata + id = incrementLedgerEntry.id + ledgerSequenceNumber = incrementLedgerEntry.ledgerSequenceNumber + entryStatus = incrementLedgerEntry.entryStatus + customer = incrementLedgerEntry.customer + startingBalance = incrementLedgerEntry.startingBalance + endingBalance = incrementLedgerEntry.endingBalance + amount = incrementLedgerEntry.amount + currency = incrementLedgerEntry.currency + createdAt = incrementLedgerEntry.createdAt + description = incrementLedgerEntry.description + creditBlock = incrementLedgerEntry.creditBlock + entryType = incrementLedgerEntry.entryType + additionalProperties = incrementLedgerEntry.additionalProperties.toMutableMap() } /** @@ -533,112 +559,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): IncrementLedgerEntry = IncrementLedgerEntry( metadata, @@ -658,18 +663,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -690,6 +700,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -715,22 +727,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -738,20 +746,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -759,6 +764,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -786,17 +799,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -812,6 +828,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -835,34 +853,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -870,6 +883,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -1009,19 +1030,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -1041,17 +1063,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1059,6 +1080,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1097,31 +1126,60 @@ private constructor( "IncrementLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = DecrementLedgerEntry.Builder::class) @NoAutoDetect class DecrementLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val priceId: JsonField, - private val eventId: JsonField, - private val invoiceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("event_id") + @ExcludeMissing + private val eventId: JsonField = JsonMissing.of(), + @JsonProperty("invoice_id") + @ExcludeMissing + private val invoiceId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -1204,6 +1262,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): DecrementLedgerEntry = apply { if (!validated) { metadata().validate() @@ -1255,23 +1315,23 @@ private constructor( @JvmSynthetic internal fun from(decrementLedgerEntry: DecrementLedgerEntry) = apply { - this.metadata = decrementLedgerEntry.metadata - this.id = decrementLedgerEntry.id - this.ledgerSequenceNumber = decrementLedgerEntry.ledgerSequenceNumber - this.entryStatus = decrementLedgerEntry.entryStatus - this.customer = decrementLedgerEntry.customer - this.startingBalance = decrementLedgerEntry.startingBalance - this.endingBalance = decrementLedgerEntry.endingBalance - this.amount = decrementLedgerEntry.amount - this.currency = decrementLedgerEntry.currency - this.createdAt = decrementLedgerEntry.createdAt - this.description = decrementLedgerEntry.description - this.creditBlock = decrementLedgerEntry.creditBlock - this.entryType = decrementLedgerEntry.entryType - this.priceId = decrementLedgerEntry.priceId - this.eventId = decrementLedgerEntry.eventId - this.invoiceId = decrementLedgerEntry.invoiceId - additionalProperties(decrementLedgerEntry.additionalProperties) + metadata = decrementLedgerEntry.metadata + id = decrementLedgerEntry.id + ledgerSequenceNumber = decrementLedgerEntry.ledgerSequenceNumber + entryStatus = decrementLedgerEntry.entryStatus + customer = decrementLedgerEntry.customer + startingBalance = decrementLedgerEntry.startingBalance + endingBalance = decrementLedgerEntry.endingBalance + amount = decrementLedgerEntry.amount + currency = decrementLedgerEntry.currency + createdAt = decrementLedgerEntry.createdAt + description = decrementLedgerEntry.description + creditBlock = decrementLedgerEntry.creditBlock + entryType = decrementLedgerEntry.entryType + priceId = decrementLedgerEntry.priceId + eventId = decrementLedgerEntry.eventId + invoiceId = decrementLedgerEntry.invoiceId + additionalProperties = decrementLedgerEntry.additionalProperties.toMutableMap() } /** @@ -1286,130 +1346,103 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun eventId(eventId: String) = eventId(JsonField.of(eventId)) - @JsonProperty("event_id") - @ExcludeMissing fun eventId(eventId: JsonField) = apply { this.eventId = eventId } fun invoiceId(invoiceId: String) = invoiceId(JsonField.of(invoiceId)) - @JsonProperty("invoice_id") - @ExcludeMissing fun invoiceId(invoiceId: JsonField) = apply { this.invoiceId = invoiceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): DecrementLedgerEntry = DecrementLedgerEntry( metadata, @@ -1432,18 +1465,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -1464,6 +1502,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -1489,22 +1529,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -1512,20 +1548,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1533,6 +1566,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -1560,17 +1601,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -1586,6 +1630,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -1609,34 +1655,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1644,6 +1685,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -1783,19 +1832,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -1815,17 +1865,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1833,6 +1882,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1871,29 +1928,54 @@ private constructor( "DecrementLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, priceId=$priceId, eventId=$eventId, invoiceId=$invoiceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ExpirationChangeLedgerEntry.Builder::class) @NoAutoDetect class ExpirationChangeLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val newBlockExpiryDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("new_block_expiry_date") + @ExcludeMissing + private val newBlockExpiryDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -1971,6 +2053,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ExpirationChangeLedgerEntry = apply { if (!validated) { metadata().validate() @@ -2018,21 +2102,22 @@ private constructor( @JvmSynthetic internal fun from(expirationChangeLedgerEntry: ExpirationChangeLedgerEntry) = apply { - this.metadata = expirationChangeLedgerEntry.metadata - this.id = expirationChangeLedgerEntry.id - this.ledgerSequenceNumber = expirationChangeLedgerEntry.ledgerSequenceNumber - this.entryStatus = expirationChangeLedgerEntry.entryStatus - this.customer = expirationChangeLedgerEntry.customer - this.startingBalance = expirationChangeLedgerEntry.startingBalance - this.endingBalance = expirationChangeLedgerEntry.endingBalance - this.amount = expirationChangeLedgerEntry.amount - this.currency = expirationChangeLedgerEntry.currency - this.createdAt = expirationChangeLedgerEntry.createdAt - this.description = expirationChangeLedgerEntry.description - this.creditBlock = expirationChangeLedgerEntry.creditBlock - this.entryType = expirationChangeLedgerEntry.entryType - this.newBlockExpiryDate = expirationChangeLedgerEntry.newBlockExpiryDate - additionalProperties(expirationChangeLedgerEntry.additionalProperties) + metadata = expirationChangeLedgerEntry.metadata + id = expirationChangeLedgerEntry.id + ledgerSequenceNumber = expirationChangeLedgerEntry.ledgerSequenceNumber + entryStatus = expirationChangeLedgerEntry.entryStatus + customer = expirationChangeLedgerEntry.customer + startingBalance = expirationChangeLedgerEntry.startingBalance + endingBalance = expirationChangeLedgerEntry.endingBalance + amount = expirationChangeLedgerEntry.amount + currency = expirationChangeLedgerEntry.currency + createdAt = expirationChangeLedgerEntry.createdAt + description = expirationChangeLedgerEntry.description + creditBlock = expirationChangeLedgerEntry.creditBlock + entryType = expirationChangeLedgerEntry.entryType + newBlockExpiryDate = expirationChangeLedgerEntry.newBlockExpiryDate + additionalProperties = + expirationChangeLedgerEntry.additionalProperties.toMutableMap() } /** @@ -2047,121 +2132,98 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun newBlockExpiryDate(newBlockExpiryDate: OffsetDateTime) = newBlockExpiryDate(JsonField.of(newBlockExpiryDate)) - @JsonProperty("new_block_expiry_date") - @ExcludeMissing fun newBlockExpiryDate(newBlockExpiryDate: JsonField) = apply { this.newBlockExpiryDate = newBlockExpiryDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ExpirationChangeLedgerEntry = ExpirationChangeLedgerEntry( metadata, @@ -2182,18 +2244,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -2214,6 +2281,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -2239,22 +2308,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -2262,20 +2327,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2283,6 +2345,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -2310,17 +2380,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -2336,6 +2409,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -2359,34 +2434,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2394,6 +2464,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -2533,19 +2611,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -2565,17 +2644,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2583,6 +2661,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2621,28 +2707,51 @@ private constructor( "ExpirationChangeLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, newBlockExpiryDate=$newBlockExpiryDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = CreditBlockExpiryLedgerEntry.Builder::class) @NoAutoDetect class CreditBlockExpiryLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -2713,6 +2822,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlockExpiryLedgerEntry = apply { if (!validated) { metadata().validate() @@ -2758,20 +2869,21 @@ private constructor( @JvmSynthetic internal fun from(creditBlockExpiryLedgerEntry: CreditBlockExpiryLedgerEntry) = apply { - this.metadata = creditBlockExpiryLedgerEntry.metadata - this.id = creditBlockExpiryLedgerEntry.id - this.ledgerSequenceNumber = creditBlockExpiryLedgerEntry.ledgerSequenceNumber - this.entryStatus = creditBlockExpiryLedgerEntry.entryStatus - this.customer = creditBlockExpiryLedgerEntry.customer - this.startingBalance = creditBlockExpiryLedgerEntry.startingBalance - this.endingBalance = creditBlockExpiryLedgerEntry.endingBalance - this.amount = creditBlockExpiryLedgerEntry.amount - this.currency = creditBlockExpiryLedgerEntry.currency - this.createdAt = creditBlockExpiryLedgerEntry.createdAt - this.description = creditBlockExpiryLedgerEntry.description - this.creditBlock = creditBlockExpiryLedgerEntry.creditBlock - this.entryType = creditBlockExpiryLedgerEntry.entryType - additionalProperties(creditBlockExpiryLedgerEntry.additionalProperties) + metadata = creditBlockExpiryLedgerEntry.metadata + id = creditBlockExpiryLedgerEntry.id + ledgerSequenceNumber = creditBlockExpiryLedgerEntry.ledgerSequenceNumber + entryStatus = creditBlockExpiryLedgerEntry.entryStatus + customer = creditBlockExpiryLedgerEntry.customer + startingBalance = creditBlockExpiryLedgerEntry.startingBalance + endingBalance = creditBlockExpiryLedgerEntry.endingBalance + amount = creditBlockExpiryLedgerEntry.amount + currency = creditBlockExpiryLedgerEntry.currency + createdAt = creditBlockExpiryLedgerEntry.createdAt + description = creditBlockExpiryLedgerEntry.description + creditBlock = creditBlockExpiryLedgerEntry.creditBlock + entryType = creditBlockExpiryLedgerEntry.entryType + additionalProperties = + creditBlockExpiryLedgerEntry.additionalProperties.toMutableMap() } /** @@ -2786,112 +2898,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlockExpiryLedgerEntry = CreditBlockExpiryLedgerEntry( metadata, @@ -2911,18 +3002,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -2943,6 +3039,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -2968,22 +3066,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -2991,20 +3085,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3012,6 +3103,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -3039,17 +3138,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -3065,6 +3167,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -3088,34 +3192,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3123,6 +3222,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -3262,19 +3369,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -3294,17 +3402,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3312,6 +3419,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -3350,30 +3465,57 @@ private constructor( "CreditBlockExpiryLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = VoidLedgerEntry.Builder::class) @NoAutoDetect class VoidLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val voidReason: JsonField, - private val voidAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("void_reason") + @ExcludeMissing + private val voidReason: JsonField = JsonMissing.of(), + @JsonProperty("void_amount") + @ExcludeMissing + private val voidAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -3453,6 +3595,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): VoidLedgerEntry = apply { if (!validated) { metadata().validate() @@ -3502,22 +3646,22 @@ private constructor( @JvmSynthetic internal fun from(voidLedgerEntry: VoidLedgerEntry) = apply { - this.metadata = voidLedgerEntry.metadata - this.id = voidLedgerEntry.id - this.ledgerSequenceNumber = voidLedgerEntry.ledgerSequenceNumber - this.entryStatus = voidLedgerEntry.entryStatus - this.customer = voidLedgerEntry.customer - this.startingBalance = voidLedgerEntry.startingBalance - this.endingBalance = voidLedgerEntry.endingBalance - this.amount = voidLedgerEntry.amount - this.currency = voidLedgerEntry.currency - this.createdAt = voidLedgerEntry.createdAt - this.description = voidLedgerEntry.description - this.creditBlock = voidLedgerEntry.creditBlock - this.entryType = voidLedgerEntry.entryType - this.voidReason = voidLedgerEntry.voidReason - this.voidAmount = voidLedgerEntry.voidAmount - additionalProperties(voidLedgerEntry.additionalProperties) + metadata = voidLedgerEntry.metadata + id = voidLedgerEntry.id + ledgerSequenceNumber = voidLedgerEntry.ledgerSequenceNumber + entryStatus = voidLedgerEntry.entryStatus + customer = voidLedgerEntry.customer + startingBalance = voidLedgerEntry.startingBalance + endingBalance = voidLedgerEntry.endingBalance + amount = voidLedgerEntry.amount + currency = voidLedgerEntry.currency + createdAt = voidLedgerEntry.createdAt + description = voidLedgerEntry.description + creditBlock = voidLedgerEntry.creditBlock + entryType = voidLedgerEntry.entryType + voidReason = voidLedgerEntry.voidReason + voidAmount = voidLedgerEntry.voidAmount + additionalProperties = voidLedgerEntry.additionalProperties.toMutableMap() } /** @@ -3532,124 +3676,99 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun voidReason(voidReason: String) = voidReason(JsonField.of(voidReason)) - @JsonProperty("void_reason") - @ExcludeMissing fun voidReason(voidReason: JsonField) = apply { this.voidReason = voidReason } fun voidAmount(voidAmount: Double) = voidAmount(JsonField.of(voidAmount)) - @JsonProperty("void_amount") - @ExcludeMissing fun voidAmount(voidAmount: JsonField) = apply { this.voidAmount = voidAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): VoidLedgerEntry = VoidLedgerEntry( metadata, @@ -3671,18 +3790,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -3703,6 +3827,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -3728,22 +3854,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -3751,20 +3873,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3772,6 +3891,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -3799,17 +3926,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -3825,6 +3955,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -3848,34 +3980,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3883,6 +4010,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -4022,19 +4157,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4054,17 +4190,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4072,6 +4207,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4110,31 +4253,60 @@ private constructor( "VoidLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, voidReason=$voidReason, voidAmount=$voidAmount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = VoidInitiatedLedgerEntry.Builder::class) @NoAutoDetect class VoidInitiatedLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val newBlockExpiryDate: JsonField, - private val voidReason: JsonField, - private val voidAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("new_block_expiry_date") + @ExcludeMissing + private val newBlockExpiryDate: JsonField = JsonMissing.of(), + @JsonProperty("void_reason") + @ExcludeMissing + private val voidReason: JsonField = JsonMissing.of(), + @JsonProperty("void_amount") + @ExcludeMissing + private val voidAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -4221,6 +4393,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): VoidInitiatedLedgerEntry = apply { if (!validated) { metadata().validate() @@ -4272,23 +4446,23 @@ private constructor( @JvmSynthetic internal fun from(voidInitiatedLedgerEntry: VoidInitiatedLedgerEntry) = apply { - this.metadata = voidInitiatedLedgerEntry.metadata - this.id = voidInitiatedLedgerEntry.id - this.ledgerSequenceNumber = voidInitiatedLedgerEntry.ledgerSequenceNumber - this.entryStatus = voidInitiatedLedgerEntry.entryStatus - this.customer = voidInitiatedLedgerEntry.customer - this.startingBalance = voidInitiatedLedgerEntry.startingBalance - this.endingBalance = voidInitiatedLedgerEntry.endingBalance - this.amount = voidInitiatedLedgerEntry.amount - this.currency = voidInitiatedLedgerEntry.currency - this.createdAt = voidInitiatedLedgerEntry.createdAt - this.description = voidInitiatedLedgerEntry.description - this.creditBlock = voidInitiatedLedgerEntry.creditBlock - this.entryType = voidInitiatedLedgerEntry.entryType - this.newBlockExpiryDate = voidInitiatedLedgerEntry.newBlockExpiryDate - this.voidReason = voidInitiatedLedgerEntry.voidReason - this.voidAmount = voidInitiatedLedgerEntry.voidAmount - additionalProperties(voidInitiatedLedgerEntry.additionalProperties) + metadata = voidInitiatedLedgerEntry.metadata + id = voidInitiatedLedgerEntry.id + ledgerSequenceNumber = voidInitiatedLedgerEntry.ledgerSequenceNumber + entryStatus = voidInitiatedLedgerEntry.entryStatus + customer = voidInitiatedLedgerEntry.customer + startingBalance = voidInitiatedLedgerEntry.startingBalance + endingBalance = voidInitiatedLedgerEntry.endingBalance + amount = voidInitiatedLedgerEntry.amount + currency = voidInitiatedLedgerEntry.currency + createdAt = voidInitiatedLedgerEntry.createdAt + description = voidInitiatedLedgerEntry.description + creditBlock = voidInitiatedLedgerEntry.creditBlock + entryType = voidInitiatedLedgerEntry.entryType + newBlockExpiryDate = voidInitiatedLedgerEntry.newBlockExpiryDate + voidReason = voidInitiatedLedgerEntry.voidReason + voidAmount = voidInitiatedLedgerEntry.voidAmount + additionalProperties = voidInitiatedLedgerEntry.additionalProperties.toMutableMap() } /** @@ -4303,133 +4477,106 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun newBlockExpiryDate(newBlockExpiryDate: OffsetDateTime) = newBlockExpiryDate(JsonField.of(newBlockExpiryDate)) - @JsonProperty("new_block_expiry_date") - @ExcludeMissing fun newBlockExpiryDate(newBlockExpiryDate: JsonField) = apply { this.newBlockExpiryDate = newBlockExpiryDate } fun voidReason(voidReason: String) = voidReason(JsonField.of(voidReason)) - @JsonProperty("void_reason") - @ExcludeMissing fun voidReason(voidReason: JsonField) = apply { this.voidReason = voidReason } fun voidAmount(voidAmount: Double) = voidAmount(JsonField.of(voidAmount)) - @JsonProperty("void_amount") - @ExcludeMissing fun voidAmount(voidAmount: JsonField) = apply { this.voidAmount = voidAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): VoidInitiatedLedgerEntry = VoidInitiatedLedgerEntry( metadata, @@ -4452,18 +4599,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -4484,6 +4636,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -4509,22 +4663,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -4532,20 +4682,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4553,6 +4700,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -4580,17 +4735,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -4606,6 +4764,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -4629,34 +4789,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4664,6 +4819,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -4803,19 +4966,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4835,17 +4999,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4853,6 +5016,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4891,28 +5062,51 @@ private constructor( "VoidInitiatedLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, newBlockExpiryDate=$newBlockExpiryDate, voidReason=$voidReason, voidAmount=$voidAmount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AmendmentLedgerEntry.Builder::class) @NoAutoDetect class AmendmentLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -4983,6 +5177,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmendmentLedgerEntry = apply { if (!validated) { metadata().validate() @@ -5028,20 +5224,20 @@ private constructor( @JvmSynthetic internal fun from(amendmentLedgerEntry: AmendmentLedgerEntry) = apply { - this.metadata = amendmentLedgerEntry.metadata - this.id = amendmentLedgerEntry.id - this.ledgerSequenceNumber = amendmentLedgerEntry.ledgerSequenceNumber - this.entryStatus = amendmentLedgerEntry.entryStatus - this.customer = amendmentLedgerEntry.customer - this.startingBalance = amendmentLedgerEntry.startingBalance - this.endingBalance = amendmentLedgerEntry.endingBalance - this.amount = amendmentLedgerEntry.amount - this.currency = amendmentLedgerEntry.currency - this.createdAt = amendmentLedgerEntry.createdAt - this.description = amendmentLedgerEntry.description - this.creditBlock = amendmentLedgerEntry.creditBlock - this.entryType = amendmentLedgerEntry.entryType - additionalProperties(amendmentLedgerEntry.additionalProperties) + metadata = amendmentLedgerEntry.metadata + id = amendmentLedgerEntry.id + ledgerSequenceNumber = amendmentLedgerEntry.ledgerSequenceNumber + entryStatus = amendmentLedgerEntry.entryStatus + customer = amendmentLedgerEntry.customer + startingBalance = amendmentLedgerEntry.startingBalance + endingBalance = amendmentLedgerEntry.endingBalance + amount = amendmentLedgerEntry.amount + currency = amendmentLedgerEntry.currency + createdAt = amendmentLedgerEntry.createdAt + description = amendmentLedgerEntry.description + creditBlock = amendmentLedgerEntry.creditBlock + entryType = amendmentLedgerEntry.entryType + additionalProperties = amendmentLedgerEntry.additionalProperties.toMutableMap() } /** @@ -5056,112 +5252,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmendmentLedgerEntry = AmendmentLedgerEntry( metadata, @@ -5181,18 +5356,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -5213,6 +5393,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -5238,22 +5420,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -5261,20 +5439,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5282,6 +5457,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -5309,17 +5492,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -5335,6 +5521,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -5358,34 +5546,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5393,6 +5576,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -5532,19 +5723,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -5564,17 +5756,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5582,6 +5773,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListPage.kt index 03bd84fe..b3196b68 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.customers.credits.LedgerService import java.util.Objects @@ -86,13 +87,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -157,7 +161,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -165,12 +168,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListPageAsync.kt index 2d082c60..81da59a0 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.customers.credits.LedgerServiceAsync import java.util.Objects @@ -89,13 +90,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -160,7 +164,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -168,12 +171,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListResponse.kt index 3aeeff8a..0cd3bdb9 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditLedgerListResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -348,28 +349,51 @@ private constructor( } } - @JsonDeserialize(builder = IncrementLedgerEntry.Builder::class) @NoAutoDetect class IncrementLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -440,6 +464,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): IncrementLedgerEntry = apply { if (!validated) { metadata().validate() @@ -485,20 +511,20 @@ private constructor( @JvmSynthetic internal fun from(incrementLedgerEntry: IncrementLedgerEntry) = apply { - this.metadata = incrementLedgerEntry.metadata - this.id = incrementLedgerEntry.id - this.ledgerSequenceNumber = incrementLedgerEntry.ledgerSequenceNumber - this.entryStatus = incrementLedgerEntry.entryStatus - this.customer = incrementLedgerEntry.customer - this.startingBalance = incrementLedgerEntry.startingBalance - this.endingBalance = incrementLedgerEntry.endingBalance - this.amount = incrementLedgerEntry.amount - this.currency = incrementLedgerEntry.currency - this.createdAt = incrementLedgerEntry.createdAt - this.description = incrementLedgerEntry.description - this.creditBlock = incrementLedgerEntry.creditBlock - this.entryType = incrementLedgerEntry.entryType - additionalProperties(incrementLedgerEntry.additionalProperties) + metadata = incrementLedgerEntry.metadata + id = incrementLedgerEntry.id + ledgerSequenceNumber = incrementLedgerEntry.ledgerSequenceNumber + entryStatus = incrementLedgerEntry.entryStatus + customer = incrementLedgerEntry.customer + startingBalance = incrementLedgerEntry.startingBalance + endingBalance = incrementLedgerEntry.endingBalance + amount = incrementLedgerEntry.amount + currency = incrementLedgerEntry.currency + createdAt = incrementLedgerEntry.createdAt + description = incrementLedgerEntry.description + creditBlock = incrementLedgerEntry.creditBlock + entryType = incrementLedgerEntry.entryType + additionalProperties = incrementLedgerEntry.additionalProperties.toMutableMap() } /** @@ -513,112 +539,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): IncrementLedgerEntry = IncrementLedgerEntry( metadata, @@ -638,18 +643,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -670,6 +680,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -695,22 +707,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -718,20 +726,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -739,6 +744,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -766,17 +779,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -792,6 +808,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -815,34 +833,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -850,6 +863,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -989,19 +1010,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -1021,17 +1043,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1039,6 +1060,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1077,31 +1106,60 @@ private constructor( "IncrementLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = DecrementLedgerEntry.Builder::class) @NoAutoDetect class DecrementLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val priceId: JsonField, - private val eventId: JsonField, - private val invoiceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("event_id") + @ExcludeMissing + private val eventId: JsonField = JsonMissing.of(), + @JsonProperty("invoice_id") + @ExcludeMissing + private val invoiceId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -1184,6 +1242,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): DecrementLedgerEntry = apply { if (!validated) { metadata().validate() @@ -1235,23 +1295,23 @@ private constructor( @JvmSynthetic internal fun from(decrementLedgerEntry: DecrementLedgerEntry) = apply { - this.metadata = decrementLedgerEntry.metadata - this.id = decrementLedgerEntry.id - this.ledgerSequenceNumber = decrementLedgerEntry.ledgerSequenceNumber - this.entryStatus = decrementLedgerEntry.entryStatus - this.customer = decrementLedgerEntry.customer - this.startingBalance = decrementLedgerEntry.startingBalance - this.endingBalance = decrementLedgerEntry.endingBalance - this.amount = decrementLedgerEntry.amount - this.currency = decrementLedgerEntry.currency - this.createdAt = decrementLedgerEntry.createdAt - this.description = decrementLedgerEntry.description - this.creditBlock = decrementLedgerEntry.creditBlock - this.entryType = decrementLedgerEntry.entryType - this.priceId = decrementLedgerEntry.priceId - this.eventId = decrementLedgerEntry.eventId - this.invoiceId = decrementLedgerEntry.invoiceId - additionalProperties(decrementLedgerEntry.additionalProperties) + metadata = decrementLedgerEntry.metadata + id = decrementLedgerEntry.id + ledgerSequenceNumber = decrementLedgerEntry.ledgerSequenceNumber + entryStatus = decrementLedgerEntry.entryStatus + customer = decrementLedgerEntry.customer + startingBalance = decrementLedgerEntry.startingBalance + endingBalance = decrementLedgerEntry.endingBalance + amount = decrementLedgerEntry.amount + currency = decrementLedgerEntry.currency + createdAt = decrementLedgerEntry.createdAt + description = decrementLedgerEntry.description + creditBlock = decrementLedgerEntry.creditBlock + entryType = decrementLedgerEntry.entryType + priceId = decrementLedgerEntry.priceId + eventId = decrementLedgerEntry.eventId + invoiceId = decrementLedgerEntry.invoiceId + additionalProperties = decrementLedgerEntry.additionalProperties.toMutableMap() } /** @@ -1266,130 +1326,103 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun eventId(eventId: String) = eventId(JsonField.of(eventId)) - @JsonProperty("event_id") - @ExcludeMissing fun eventId(eventId: JsonField) = apply { this.eventId = eventId } fun invoiceId(invoiceId: String) = invoiceId(JsonField.of(invoiceId)) - @JsonProperty("invoice_id") - @ExcludeMissing fun invoiceId(invoiceId: JsonField) = apply { this.invoiceId = invoiceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): DecrementLedgerEntry = DecrementLedgerEntry( metadata, @@ -1412,18 +1445,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -1444,6 +1482,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -1469,22 +1509,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -1492,20 +1528,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1513,6 +1546,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -1540,17 +1581,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -1566,6 +1610,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -1589,34 +1635,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1624,6 +1665,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -1763,19 +1812,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -1795,17 +1845,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1813,6 +1862,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1851,29 +1908,54 @@ private constructor( "DecrementLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, priceId=$priceId, eventId=$eventId, invoiceId=$invoiceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ExpirationChangeLedgerEntry.Builder::class) @NoAutoDetect class ExpirationChangeLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val newBlockExpiryDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("new_block_expiry_date") + @ExcludeMissing + private val newBlockExpiryDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -1951,6 +2033,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ExpirationChangeLedgerEntry = apply { if (!validated) { metadata().validate() @@ -1998,21 +2082,22 @@ private constructor( @JvmSynthetic internal fun from(expirationChangeLedgerEntry: ExpirationChangeLedgerEntry) = apply { - this.metadata = expirationChangeLedgerEntry.metadata - this.id = expirationChangeLedgerEntry.id - this.ledgerSequenceNumber = expirationChangeLedgerEntry.ledgerSequenceNumber - this.entryStatus = expirationChangeLedgerEntry.entryStatus - this.customer = expirationChangeLedgerEntry.customer - this.startingBalance = expirationChangeLedgerEntry.startingBalance - this.endingBalance = expirationChangeLedgerEntry.endingBalance - this.amount = expirationChangeLedgerEntry.amount - this.currency = expirationChangeLedgerEntry.currency - this.createdAt = expirationChangeLedgerEntry.createdAt - this.description = expirationChangeLedgerEntry.description - this.creditBlock = expirationChangeLedgerEntry.creditBlock - this.entryType = expirationChangeLedgerEntry.entryType - this.newBlockExpiryDate = expirationChangeLedgerEntry.newBlockExpiryDate - additionalProperties(expirationChangeLedgerEntry.additionalProperties) + metadata = expirationChangeLedgerEntry.metadata + id = expirationChangeLedgerEntry.id + ledgerSequenceNumber = expirationChangeLedgerEntry.ledgerSequenceNumber + entryStatus = expirationChangeLedgerEntry.entryStatus + customer = expirationChangeLedgerEntry.customer + startingBalance = expirationChangeLedgerEntry.startingBalance + endingBalance = expirationChangeLedgerEntry.endingBalance + amount = expirationChangeLedgerEntry.amount + currency = expirationChangeLedgerEntry.currency + createdAt = expirationChangeLedgerEntry.createdAt + description = expirationChangeLedgerEntry.description + creditBlock = expirationChangeLedgerEntry.creditBlock + entryType = expirationChangeLedgerEntry.entryType + newBlockExpiryDate = expirationChangeLedgerEntry.newBlockExpiryDate + additionalProperties = + expirationChangeLedgerEntry.additionalProperties.toMutableMap() } /** @@ -2027,121 +2112,98 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun newBlockExpiryDate(newBlockExpiryDate: OffsetDateTime) = newBlockExpiryDate(JsonField.of(newBlockExpiryDate)) - @JsonProperty("new_block_expiry_date") - @ExcludeMissing fun newBlockExpiryDate(newBlockExpiryDate: JsonField) = apply { this.newBlockExpiryDate = newBlockExpiryDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ExpirationChangeLedgerEntry = ExpirationChangeLedgerEntry( metadata, @@ -2162,18 +2224,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -2194,6 +2261,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -2219,22 +2288,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -2242,20 +2307,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2263,6 +2325,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -2290,17 +2360,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -2316,6 +2389,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -2339,34 +2414,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2374,6 +2444,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -2513,19 +2591,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -2545,17 +2624,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2563,6 +2641,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2601,28 +2687,51 @@ private constructor( "ExpirationChangeLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, newBlockExpiryDate=$newBlockExpiryDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = CreditBlockExpiryLedgerEntry.Builder::class) @NoAutoDetect class CreditBlockExpiryLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -2693,6 +2802,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlockExpiryLedgerEntry = apply { if (!validated) { metadata().validate() @@ -2738,20 +2849,21 @@ private constructor( @JvmSynthetic internal fun from(creditBlockExpiryLedgerEntry: CreditBlockExpiryLedgerEntry) = apply { - this.metadata = creditBlockExpiryLedgerEntry.metadata - this.id = creditBlockExpiryLedgerEntry.id - this.ledgerSequenceNumber = creditBlockExpiryLedgerEntry.ledgerSequenceNumber - this.entryStatus = creditBlockExpiryLedgerEntry.entryStatus - this.customer = creditBlockExpiryLedgerEntry.customer - this.startingBalance = creditBlockExpiryLedgerEntry.startingBalance - this.endingBalance = creditBlockExpiryLedgerEntry.endingBalance - this.amount = creditBlockExpiryLedgerEntry.amount - this.currency = creditBlockExpiryLedgerEntry.currency - this.createdAt = creditBlockExpiryLedgerEntry.createdAt - this.description = creditBlockExpiryLedgerEntry.description - this.creditBlock = creditBlockExpiryLedgerEntry.creditBlock - this.entryType = creditBlockExpiryLedgerEntry.entryType - additionalProperties(creditBlockExpiryLedgerEntry.additionalProperties) + metadata = creditBlockExpiryLedgerEntry.metadata + id = creditBlockExpiryLedgerEntry.id + ledgerSequenceNumber = creditBlockExpiryLedgerEntry.ledgerSequenceNumber + entryStatus = creditBlockExpiryLedgerEntry.entryStatus + customer = creditBlockExpiryLedgerEntry.customer + startingBalance = creditBlockExpiryLedgerEntry.startingBalance + endingBalance = creditBlockExpiryLedgerEntry.endingBalance + amount = creditBlockExpiryLedgerEntry.amount + currency = creditBlockExpiryLedgerEntry.currency + createdAt = creditBlockExpiryLedgerEntry.createdAt + description = creditBlockExpiryLedgerEntry.description + creditBlock = creditBlockExpiryLedgerEntry.creditBlock + entryType = creditBlockExpiryLedgerEntry.entryType + additionalProperties = + creditBlockExpiryLedgerEntry.additionalProperties.toMutableMap() } /** @@ -2766,112 +2878,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlockExpiryLedgerEntry = CreditBlockExpiryLedgerEntry( metadata, @@ -2891,18 +2982,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -2923,6 +3019,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -2948,22 +3046,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -2971,20 +3065,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2992,6 +3083,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -3019,17 +3118,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -3045,6 +3147,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -3068,34 +3172,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3103,6 +3202,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -3242,19 +3349,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -3274,17 +3382,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3292,6 +3399,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -3330,30 +3445,57 @@ private constructor( "CreditBlockExpiryLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = VoidLedgerEntry.Builder::class) @NoAutoDetect class VoidLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val voidReason: JsonField, - private val voidAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("void_reason") + @ExcludeMissing + private val voidReason: JsonField = JsonMissing.of(), + @JsonProperty("void_amount") + @ExcludeMissing + private val voidAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -3433,6 +3575,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): VoidLedgerEntry = apply { if (!validated) { metadata().validate() @@ -3482,22 +3626,22 @@ private constructor( @JvmSynthetic internal fun from(voidLedgerEntry: VoidLedgerEntry) = apply { - this.metadata = voidLedgerEntry.metadata - this.id = voidLedgerEntry.id - this.ledgerSequenceNumber = voidLedgerEntry.ledgerSequenceNumber - this.entryStatus = voidLedgerEntry.entryStatus - this.customer = voidLedgerEntry.customer - this.startingBalance = voidLedgerEntry.startingBalance - this.endingBalance = voidLedgerEntry.endingBalance - this.amount = voidLedgerEntry.amount - this.currency = voidLedgerEntry.currency - this.createdAt = voidLedgerEntry.createdAt - this.description = voidLedgerEntry.description - this.creditBlock = voidLedgerEntry.creditBlock - this.entryType = voidLedgerEntry.entryType - this.voidReason = voidLedgerEntry.voidReason - this.voidAmount = voidLedgerEntry.voidAmount - additionalProperties(voidLedgerEntry.additionalProperties) + metadata = voidLedgerEntry.metadata + id = voidLedgerEntry.id + ledgerSequenceNumber = voidLedgerEntry.ledgerSequenceNumber + entryStatus = voidLedgerEntry.entryStatus + customer = voidLedgerEntry.customer + startingBalance = voidLedgerEntry.startingBalance + endingBalance = voidLedgerEntry.endingBalance + amount = voidLedgerEntry.amount + currency = voidLedgerEntry.currency + createdAt = voidLedgerEntry.createdAt + description = voidLedgerEntry.description + creditBlock = voidLedgerEntry.creditBlock + entryType = voidLedgerEntry.entryType + voidReason = voidLedgerEntry.voidReason + voidAmount = voidLedgerEntry.voidAmount + additionalProperties = voidLedgerEntry.additionalProperties.toMutableMap() } /** @@ -3512,124 +3656,99 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun voidReason(voidReason: String) = voidReason(JsonField.of(voidReason)) - @JsonProperty("void_reason") - @ExcludeMissing fun voidReason(voidReason: JsonField) = apply { this.voidReason = voidReason } fun voidAmount(voidAmount: Double) = voidAmount(JsonField.of(voidAmount)) - @JsonProperty("void_amount") - @ExcludeMissing fun voidAmount(voidAmount: JsonField) = apply { this.voidAmount = voidAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): VoidLedgerEntry = VoidLedgerEntry( metadata, @@ -3651,18 +3770,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -3683,6 +3807,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -3708,22 +3834,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -3731,20 +3853,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3752,6 +3871,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -3779,17 +3906,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -3805,6 +3935,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -3828,34 +3960,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3863,6 +3990,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -4002,19 +4137,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4034,17 +4170,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4052,6 +4187,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4090,31 +4233,60 @@ private constructor( "VoidLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, voidReason=$voidReason, voidAmount=$voidAmount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = VoidInitiatedLedgerEntry.Builder::class) @NoAutoDetect class VoidInitiatedLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val newBlockExpiryDate: JsonField, - private val voidReason: JsonField, - private val voidAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonProperty("new_block_expiry_date") + @ExcludeMissing + private val newBlockExpiryDate: JsonField = JsonMissing.of(), + @JsonProperty("void_reason") + @ExcludeMissing + private val voidReason: JsonField = JsonMissing.of(), + @JsonProperty("void_amount") + @ExcludeMissing + private val voidAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -4201,6 +4373,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): VoidInitiatedLedgerEntry = apply { if (!validated) { metadata().validate() @@ -4252,23 +4426,23 @@ private constructor( @JvmSynthetic internal fun from(voidInitiatedLedgerEntry: VoidInitiatedLedgerEntry) = apply { - this.metadata = voidInitiatedLedgerEntry.metadata - this.id = voidInitiatedLedgerEntry.id - this.ledgerSequenceNumber = voidInitiatedLedgerEntry.ledgerSequenceNumber - this.entryStatus = voidInitiatedLedgerEntry.entryStatus - this.customer = voidInitiatedLedgerEntry.customer - this.startingBalance = voidInitiatedLedgerEntry.startingBalance - this.endingBalance = voidInitiatedLedgerEntry.endingBalance - this.amount = voidInitiatedLedgerEntry.amount - this.currency = voidInitiatedLedgerEntry.currency - this.createdAt = voidInitiatedLedgerEntry.createdAt - this.description = voidInitiatedLedgerEntry.description - this.creditBlock = voidInitiatedLedgerEntry.creditBlock - this.entryType = voidInitiatedLedgerEntry.entryType - this.newBlockExpiryDate = voidInitiatedLedgerEntry.newBlockExpiryDate - this.voidReason = voidInitiatedLedgerEntry.voidReason - this.voidAmount = voidInitiatedLedgerEntry.voidAmount - additionalProperties(voidInitiatedLedgerEntry.additionalProperties) + metadata = voidInitiatedLedgerEntry.metadata + id = voidInitiatedLedgerEntry.id + ledgerSequenceNumber = voidInitiatedLedgerEntry.ledgerSequenceNumber + entryStatus = voidInitiatedLedgerEntry.entryStatus + customer = voidInitiatedLedgerEntry.customer + startingBalance = voidInitiatedLedgerEntry.startingBalance + endingBalance = voidInitiatedLedgerEntry.endingBalance + amount = voidInitiatedLedgerEntry.amount + currency = voidInitiatedLedgerEntry.currency + createdAt = voidInitiatedLedgerEntry.createdAt + description = voidInitiatedLedgerEntry.description + creditBlock = voidInitiatedLedgerEntry.creditBlock + entryType = voidInitiatedLedgerEntry.entryType + newBlockExpiryDate = voidInitiatedLedgerEntry.newBlockExpiryDate + voidReason = voidInitiatedLedgerEntry.voidReason + voidAmount = voidInitiatedLedgerEntry.voidAmount + additionalProperties = voidInitiatedLedgerEntry.additionalProperties.toMutableMap() } /** @@ -4283,133 +4457,106 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun newBlockExpiryDate(newBlockExpiryDate: OffsetDateTime) = newBlockExpiryDate(JsonField.of(newBlockExpiryDate)) - @JsonProperty("new_block_expiry_date") - @ExcludeMissing fun newBlockExpiryDate(newBlockExpiryDate: JsonField) = apply { this.newBlockExpiryDate = newBlockExpiryDate } fun voidReason(voidReason: String) = voidReason(JsonField.of(voidReason)) - @JsonProperty("void_reason") - @ExcludeMissing fun voidReason(voidReason: JsonField) = apply { this.voidReason = voidReason } fun voidAmount(voidAmount: Double) = voidAmount(JsonField.of(voidAmount)) - @JsonProperty("void_amount") - @ExcludeMissing fun voidAmount(voidAmount: JsonField) = apply { this.voidAmount = voidAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): VoidInitiatedLedgerEntry = VoidInitiatedLedgerEntry( metadata, @@ -4432,18 +4579,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -4464,6 +4616,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -4489,22 +4643,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -4512,20 +4662,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4533,6 +4680,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -4560,17 +4715,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -4586,6 +4744,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -4609,34 +4769,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4644,6 +4799,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -4783,19 +4946,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4815,17 +4979,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4833,6 +4996,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4871,28 +5042,51 @@ private constructor( "VoidInitiatedLedgerEntry{metadata=$metadata, id=$id, ledgerSequenceNumber=$ledgerSequenceNumber, entryStatus=$entryStatus, customer=$customer, startingBalance=$startingBalance, endingBalance=$endingBalance, amount=$amount, currency=$currency, createdAt=$createdAt, description=$description, creditBlock=$creditBlock, entryType=$entryType, newBlockExpiryDate=$newBlockExpiryDate, voidReason=$voidReason, voidAmount=$voidAmount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AmendmentLedgerEntry.Builder::class) @NoAutoDetect class AmendmentLedgerEntry + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val ledgerSequenceNumber: JsonField, - private val entryStatus: JsonField, - private val customer: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val currency: JsonField, - private val createdAt: JsonField, - private val description: JsonField, - private val creditBlock: JsonField, - private val entryType: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("ledger_sequence_number") + @ExcludeMissing + private val ledgerSequenceNumber: JsonField = JsonMissing.of(), + @JsonProperty("entry_status") + @ExcludeMissing + private val entryStatus: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("credit_block") + @ExcludeMissing + private val creditBlock: JsonField = JsonMissing.of(), + @JsonProperty("entry_type") + @ExcludeMissing + private val entryType: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -4963,6 +5157,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmendmentLedgerEntry = apply { if (!validated) { metadata().validate() @@ -5008,20 +5204,20 @@ private constructor( @JvmSynthetic internal fun from(amendmentLedgerEntry: AmendmentLedgerEntry) = apply { - this.metadata = amendmentLedgerEntry.metadata - this.id = amendmentLedgerEntry.id - this.ledgerSequenceNumber = amendmentLedgerEntry.ledgerSequenceNumber - this.entryStatus = amendmentLedgerEntry.entryStatus - this.customer = amendmentLedgerEntry.customer - this.startingBalance = amendmentLedgerEntry.startingBalance - this.endingBalance = amendmentLedgerEntry.endingBalance - this.amount = amendmentLedgerEntry.amount - this.currency = amendmentLedgerEntry.currency - this.createdAt = amendmentLedgerEntry.createdAt - this.description = amendmentLedgerEntry.description - this.creditBlock = amendmentLedgerEntry.creditBlock - this.entryType = amendmentLedgerEntry.entryType - additionalProperties(amendmentLedgerEntry.additionalProperties) + metadata = amendmentLedgerEntry.metadata + id = amendmentLedgerEntry.id + ledgerSequenceNumber = amendmentLedgerEntry.ledgerSequenceNumber + entryStatus = amendmentLedgerEntry.entryStatus + customer = amendmentLedgerEntry.customer + startingBalance = amendmentLedgerEntry.startingBalance + endingBalance = amendmentLedgerEntry.endingBalance + amount = amendmentLedgerEntry.amount + currency = amendmentLedgerEntry.currency + createdAt = amendmentLedgerEntry.createdAt + description = amendmentLedgerEntry.description + creditBlock = amendmentLedgerEntry.creditBlock + entryType = amendmentLedgerEntry.entryType + additionalProperties = amendmentLedgerEntry.additionalProperties.toMutableMap() } /** @@ -5036,112 +5232,91 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun ledgerSequenceNumber(ledgerSequenceNumber: Long) = ledgerSequenceNumber(JsonField.of(ledgerSequenceNumber)) - @JsonProperty("ledger_sequence_number") - @ExcludeMissing fun ledgerSequenceNumber(ledgerSequenceNumber: JsonField) = apply { this.ledgerSequenceNumber = ledgerSequenceNumber } fun entryStatus(entryStatus: EntryStatus) = entryStatus(JsonField.of(entryStatus)) - @JsonProperty("entry_status") - @ExcludeMissing fun entryStatus(entryStatus: JsonField) = apply { this.entryStatus = entryStatus } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } fun startingBalance(startingBalance: Double) = startingBalance(JsonField.of(startingBalance)) - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } fun endingBalance(endingBalance: Double) = endingBalance(JsonField.of(endingBalance)) - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } fun amount(amount: Double) = amount(JsonField.of(amount)) - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun creditBlock(creditBlock: CreditBlock) = creditBlock(JsonField.of(creditBlock)) - @JsonProperty("credit_block") - @ExcludeMissing fun creditBlock(creditBlock: JsonField) = apply { this.creditBlock = creditBlock } fun entryType(entryType: EntryType) = entryType(JsonField.of(entryType)) - @JsonProperty("entry_type") - @ExcludeMissing fun entryType(entryType: JsonField) = apply { this.entryType = entryType } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmendmentLedgerEntry = AmendmentLedgerEntry( metadata, @@ -5161,18 +5336,23 @@ private constructor( ) } - @JsonDeserialize(builder = CreditBlock.Builder::class) @NoAutoDetect class CreditBlock + @JsonCreator private constructor( - private val id: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun expiryDate(): Optional = @@ -5193,6 +5373,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditBlock = apply { if (!validated) { id() @@ -5218,22 +5400,18 @@ private constructor( @JvmSynthetic internal fun from(creditBlock: CreditBlock) = apply { - this.id = creditBlock.id - this.expiryDate = creditBlock.expiryDate - this.perUnitCostBasis = creditBlock.perUnitCostBasis - additionalProperties(creditBlock.additionalProperties) + id = creditBlock.id + expiryDate = creditBlock.expiryDate + perUnitCostBasis = creditBlock.perUnitCostBasis + additionalProperties = creditBlock.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -5241,20 +5419,17 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5262,6 +5437,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditBlock = CreditBlock( id, @@ -5289,17 +5472,20 @@ private constructor( "CreditBlock{id=$id, expiryDate=$expiryDate, perUnitCostBasis=$perUnitCostBasis, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -5315,6 +5501,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -5338,34 +5526,29 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5373,6 +5556,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -5512,19 +5703,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -5544,17 +5736,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5562,6 +5753,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdPage.kt index 5ee30fa7..1e827578 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.customers.CreditService import java.util.Objects @@ -86,13 +87,17 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = + JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -159,7 +164,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -167,12 +171,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdPageAsync.kt index aa6329f3..5c0aa280 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.customers.CreditServiceAsync import java.util.Objects @@ -89,13 +90,17 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = + JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -162,7 +167,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -170,12 +174,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdResponse.kt index d6dbdd52..96eaad8a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListByExternalIdResponse.kt @@ -6,35 +6,45 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerCreditListByExternalIdResponse.Builder::class) @NoAutoDetect class CustomerCreditListByExternalIdResponse +@JsonCreator private constructor( - private val id: JsonField, - private val balance: JsonField, - private val effectiveDate: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val status: JsonField, - private val maximumInitialBalance: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("balance") + @ExcludeMissing + private val balance: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("maximum_initial_balance") + @ExcludeMissing + private val maximumInitialBalance: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun balance(): Double = balance.getRequired("balance") @@ -73,6 +83,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerCreditListByExternalIdResponse = apply { if (!validated) { id() @@ -108,40 +120,34 @@ private constructor( internal fun from( customerCreditListByExternalIdResponse: CustomerCreditListByExternalIdResponse ) = apply { - this.id = customerCreditListByExternalIdResponse.id - this.balance = customerCreditListByExternalIdResponse.balance - this.effectiveDate = customerCreditListByExternalIdResponse.effectiveDate - this.expiryDate = customerCreditListByExternalIdResponse.expiryDate - this.perUnitCostBasis = customerCreditListByExternalIdResponse.perUnitCostBasis - this.status = customerCreditListByExternalIdResponse.status - this.maximumInitialBalance = - customerCreditListByExternalIdResponse.maximumInitialBalance - additionalProperties(customerCreditListByExternalIdResponse.additionalProperties) + id = customerCreditListByExternalIdResponse.id + balance = customerCreditListByExternalIdResponse.balance + effectiveDate = customerCreditListByExternalIdResponse.effectiveDate + expiryDate = customerCreditListByExternalIdResponse.expiryDate + perUnitCostBasis = customerCreditListByExternalIdResponse.perUnitCostBasis + status = customerCreditListByExternalIdResponse.status + maximumInitialBalance = customerCreditListByExternalIdResponse.maximumInitialBalance + additionalProperties = + customerCreditListByExternalIdResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } fun balance(balance: Double) = balance(JsonField.of(balance)) - @JsonProperty("balance") - @ExcludeMissing fun balance(balance: JsonField) = apply { this.balance = balance } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -149,41 +155,40 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun maximumInitialBalance(maximumInitialBalance: Double) = maximumInitialBalance(JsonField.of(maximumInitialBalance)) - @JsonProperty("maximum_initial_balance") - @ExcludeMissing fun maximumInitialBalance(maximumInitialBalance: JsonField) = apply { this.maximumInitialBalance = maximumInitialBalance } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCreditListByExternalIdResponse = CustomerCreditListByExternalIdResponse( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListPage.kt index 9f9d1c53..fb43edaf 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.customers.CreditService import java.util.Objects @@ -86,13 +87,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -157,18 +161,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListPageAsync.kt index 9189f44c..f6654c83 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.customers.CreditServiceAsync import java.util.Objects @@ -89,13 +90,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -160,18 +164,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListResponse.kt index 1897b053..0b1dda6f 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditListResponse.kt @@ -6,35 +6,45 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerCreditListResponse.Builder::class) @NoAutoDetect class CustomerCreditListResponse +@JsonCreator private constructor( - private val id: JsonField, - private val balance: JsonField, - private val effectiveDate: JsonField, - private val expiryDate: JsonField, - private val perUnitCostBasis: JsonField, - private val status: JsonField, - private val maximumInitialBalance: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("balance") + @ExcludeMissing + private val balance: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("expiry_date") + @ExcludeMissing + private val expiryDate: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("maximum_initial_balance") + @ExcludeMissing + private val maximumInitialBalance: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun balance(): Double = balance.getRequired("balance") @@ -73,6 +83,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerCreditListResponse = apply { if (!validated) { id() @@ -106,39 +118,33 @@ private constructor( @JvmSynthetic internal fun from(customerCreditListResponse: CustomerCreditListResponse) = apply { - this.id = customerCreditListResponse.id - this.balance = customerCreditListResponse.balance - this.effectiveDate = customerCreditListResponse.effectiveDate - this.expiryDate = customerCreditListResponse.expiryDate - this.perUnitCostBasis = customerCreditListResponse.perUnitCostBasis - this.status = customerCreditListResponse.status - this.maximumInitialBalance = customerCreditListResponse.maximumInitialBalance - additionalProperties(customerCreditListResponse.additionalProperties) + id = customerCreditListResponse.id + balance = customerCreditListResponse.balance + effectiveDate = customerCreditListResponse.effectiveDate + expiryDate = customerCreditListResponse.expiryDate + perUnitCostBasis = customerCreditListResponse.perUnitCostBasis + status = customerCreditListResponse.status + maximumInitialBalance = customerCreditListResponse.maximumInitialBalance + additionalProperties = customerCreditListResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } fun balance(balance: Double) = balance(JsonField.of(balance)) - @JsonProperty("balance") - @ExcludeMissing fun balance(balance: JsonField) = apply { this.balance = balance } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun expiryDate(expiryDate: OffsetDateTime) = expiryDate(JsonField.of(expiryDate)) - @JsonProperty("expiry_date") - @ExcludeMissing fun expiryDate(expiryDate: JsonField) = apply { this.expiryDate = expiryDate } @@ -146,41 +152,40 @@ private constructor( fun perUnitCostBasis(perUnitCostBasis: String) = perUnitCostBasis(JsonField.of(perUnitCostBasis)) - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun maximumInitialBalance(maximumInitialBalance: Double) = maximumInitialBalance(JsonField.of(maximumInitialBalance)) - @JsonProperty("maximum_initial_balance") - @ExcludeMissing fun maximumInitialBalance(maximumInitialBalance: JsonField) = apply { this.maximumInitialBalance = maximumInitialBalance } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCreditListResponse = CustomerCreditListResponse( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdParams.kt index 2e07c223..75208a05 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -81,50 +81,52 @@ constructor( } } - @JsonDeserialize(builder = CustomerCreditTopUpCreateByExternalIdBody.Builder::class) @NoAutoDetect class CustomerCreditTopUpCreateByExternalIdBody + @JsonCreator internal constructor( - private val amount: String?, - private val currency: String?, - private val invoiceSettings: InvoiceSettings?, - private val perUnitCostBasis: String?, - private val threshold: String?, - private val expiresAfter: Long?, - private val expiresAfterUnit: ExpiresAfterUnit?, - private val additionalProperties: Map, + @JsonProperty("amount") private val amount: String, + @JsonProperty("currency") private val currency: String, + @JsonProperty("invoice_settings") private val invoiceSettings: InvoiceSettings, + @JsonProperty("per_unit_cost_basis") private val perUnitCostBasis: String, + @JsonProperty("threshold") private val threshold: String, + @JsonProperty("expires_after") private val expiresAfter: Long?, + @JsonProperty("expires_after_unit") private val expiresAfterUnit: ExpiresAfterUnit?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The amount to increment when the threshold is reached. */ - @JsonProperty("amount") fun amount(): String? = amount + @JsonProperty("amount") fun amount(): String = amount /** * The currency or custom pricing unit to use for this top-up. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency /** Settings for invoices generated by triggered top-ups. */ - @JsonProperty("invoice_settings") fun invoiceSettings(): InvoiceSettings? = invoiceSettings + @JsonProperty("invoice_settings") fun invoiceSettings(): InvoiceSettings = invoiceSettings /** How much, in the customer's currency, to charge for each unit. */ - @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(): String? = perUnitCostBasis + @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(): String = perUnitCostBasis /** * The threshold at which to trigger the top-up. If the balance is at or below this * threshold, the top-up will be triggered. */ - @JsonProperty("threshold") fun threshold(): String? = threshold + @JsonProperty("threshold") fun threshold(): String = threshold /** * The number of days or months after which the top-up expires. If unspecified, it does not * expire. */ - @JsonProperty("expires_after") fun expiresAfter(): Long? = expiresAfter + @JsonProperty("expires_after") + fun expiresAfter(): Optional = Optional.ofNullable(expiresAfter) /** The unit of expires_after. */ @JsonProperty("expires_after_unit") - fun expiresAfterUnit(): ExpiresAfterUnit? = expiresAfterUnit + fun expiresAfterUnit(): Optional = Optional.ofNullable(expiresAfterUnit) @JsonAnyGetter @ExcludeMissing @@ -152,34 +154,32 @@ constructor( internal fun from( customerCreditTopUpCreateByExternalIdBody: CustomerCreditTopUpCreateByExternalIdBody ) = apply { - this.amount = customerCreditTopUpCreateByExternalIdBody.amount - this.currency = customerCreditTopUpCreateByExternalIdBody.currency - this.invoiceSettings = customerCreditTopUpCreateByExternalIdBody.invoiceSettings - this.perUnitCostBasis = customerCreditTopUpCreateByExternalIdBody.perUnitCostBasis - this.threshold = customerCreditTopUpCreateByExternalIdBody.threshold - this.expiresAfter = customerCreditTopUpCreateByExternalIdBody.expiresAfter - this.expiresAfterUnit = customerCreditTopUpCreateByExternalIdBody.expiresAfterUnit - additionalProperties(customerCreditTopUpCreateByExternalIdBody.additionalProperties) + amount = customerCreditTopUpCreateByExternalIdBody.amount + currency = customerCreditTopUpCreateByExternalIdBody.currency + invoiceSettings = customerCreditTopUpCreateByExternalIdBody.invoiceSettings + perUnitCostBasis = customerCreditTopUpCreateByExternalIdBody.perUnitCostBasis + threshold = customerCreditTopUpCreateByExternalIdBody.threshold + expiresAfter = customerCreditTopUpCreateByExternalIdBody.expiresAfter + expiresAfterUnit = customerCreditTopUpCreateByExternalIdBody.expiresAfterUnit + additionalProperties = + customerCreditTopUpCreateByExternalIdBody.additionalProperties.toMutableMap() } /** The amount to increment when the threshold is reached. */ - @JsonProperty("amount") fun amount(amount: String) = apply { this.amount = amount } + fun amount(amount: String) = apply { this.amount = amount } /** * The currency or custom pricing unit to use for this top-up. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** Settings for invoices generated by triggered top-ups. */ - @JsonProperty("invoice_settings") fun invoiceSettings(invoiceSettings: InvoiceSettings) = apply { this.invoiceSettings = invoiceSettings } /** How much, in the customer's currency, to charge for each unit. */ - @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(perUnitCostBasis: String) = apply { this.perUnitCostBasis = perUnitCostBasis } @@ -188,36 +188,38 @@ constructor( * The threshold at which to trigger the top-up. If the balance is at or below this * threshold, the top-up will be triggered. */ - @JsonProperty("threshold") fun threshold(threshold: String) = apply { this.threshold = threshold } /** * The number of days or months after which the top-up expires. If unspecified, it does * not expire. */ - @JsonProperty("expires_after") fun expiresAfter(expiresAfter: Long) = apply { this.expiresAfter = expiresAfter } /** The unit of expires_after. */ - @JsonProperty("expires_after_unit") fun expiresAfterUnit(expiresAfterUnit: ExpiresAfterUnit) = apply { this.expiresAfterUnit = expiresAfterUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCreditTopUpCreateByExternalIdBody = CustomerCreditTopUpCreateByExternalIdBody( checkNotNull(amount) { "`amount` is required but was not set" }, @@ -474,38 +476,40 @@ constructor( } /** Settings for invoices generated by triggered top-ups. */ - @JsonDeserialize(builder = InvoiceSettings.Builder::class) @NoAutoDetect class InvoiceSettings + @JsonCreator private constructor( - private val autoCollection: Boolean?, - private val netTerms: Long?, - private val memo: String?, - private val requireSuccessfulPayment: Boolean?, - private val additionalProperties: Map, + @JsonProperty("auto_collection") private val autoCollection: Boolean, + @JsonProperty("net_terms") private val netTerms: Long, + @JsonProperty("memo") private val memo: String?, + @JsonProperty("require_successful_payment") private val requireSuccessfulPayment: Boolean?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") fun autoCollection(): Boolean = autoCollection /** * The net terms determines the difference between the invoice date and the issue date for * the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") fun netTerms(): Long? = netTerms + @JsonProperty("net_terms") fun netTerms(): Long = netTerms /** An optional memo to display on the invoice. */ - @JsonProperty("memo") fun memo(): String? = memo + @JsonProperty("memo") fun memo(): Optional = Optional.ofNullable(memo) /** * If true, new credit blocks created by this top-up will require that the corresponding * invoice is paid before they can be drawn down from. */ @JsonProperty("require_successful_payment") - fun requireSuccessfulPayment(): Boolean? = requireSuccessfulPayment + fun requireSuccessfulPayment(): Optional = + Optional.ofNullable(requireSuccessfulPayment) @JsonAnyGetter @ExcludeMissing @@ -528,18 +532,17 @@ constructor( @JvmSynthetic internal fun from(invoiceSettings: InvoiceSettings) = apply { - this.autoCollection = invoiceSettings.autoCollection - this.netTerms = invoiceSettings.netTerms - this.memo = invoiceSettings.memo - this.requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment - additionalProperties(invoiceSettings.additionalProperties) + autoCollection = invoiceSettings.autoCollection + netTerms = invoiceSettings.netTerms + memo = invoiceSettings.memo + requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment + additionalProperties = invoiceSettings.additionalProperties.toMutableMap() } /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } @@ -548,35 +551,38 @@ constructor( * The net terms determines the difference between the invoice date and the issue date * for the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") fun netTerms(netTerms: Long) = apply { this.netTerms = netTerms } /** An optional memo to display on the invoice. */ - @JsonProperty("memo") fun memo(memo: String) = apply { this.memo = memo } + fun memo(memo: String) = apply { this.memo = memo } /** * If true, new credit blocks created by this top-up will require that the corresponding * invoice is paid before they can be drawn down from. */ - @JsonProperty("require_successful_payment") fun requireSuccessfulPayment(requireSuccessfulPayment: Boolean) = apply { this.requireSuccessfulPayment = requireSuccessfulPayment } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceSettings = InvoiceSettings( checkNotNull(autoCollection) { "`autoCollection` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdResponse.kt index 1ff15716..c50aebd4 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdResponse.kt @@ -6,35 +6,47 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerCreditTopUpCreateByExternalIdResponse.Builder::class) @NoAutoDetect class CustomerCreditTopUpCreateByExternalIdResponse +@JsonCreator private constructor( - private val id: JsonField, - private val currency: JsonField, - private val threshold: JsonField, - private val amount: JsonField, - private val perUnitCostBasis: JsonField, - private val invoiceSettings: JsonField, - private val expiresAfter: JsonField, - private val expiresAfterUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("threshold") + @ExcludeMissing + private val threshold: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonProperty("invoice_settings") + @ExcludeMissing + private val invoiceSettings: JsonField = JsonMissing.of(), + @JsonProperty("expires_after") + @ExcludeMissing + private val expiresAfter: JsonField = JsonMissing.of(), + @JsonProperty("expires_after_unit") + @ExcludeMissing + private val expiresAfterUnit: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -105,6 +117,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerCreditTopUpCreateByExternalIdResponse = apply { if (!validated) { id() @@ -143,20 +157,21 @@ private constructor( customerCreditTopUpCreateByExternalIdResponse: CustomerCreditTopUpCreateByExternalIdResponse ) = apply { - this.id = customerCreditTopUpCreateByExternalIdResponse.id - this.currency = customerCreditTopUpCreateByExternalIdResponse.currency - this.threshold = customerCreditTopUpCreateByExternalIdResponse.threshold - this.amount = customerCreditTopUpCreateByExternalIdResponse.amount - this.perUnitCostBasis = customerCreditTopUpCreateByExternalIdResponse.perUnitCostBasis - this.invoiceSettings = customerCreditTopUpCreateByExternalIdResponse.invoiceSettings - this.expiresAfter = customerCreditTopUpCreateByExternalIdResponse.expiresAfter - this.expiresAfterUnit = customerCreditTopUpCreateByExternalIdResponse.expiresAfterUnit - additionalProperties(customerCreditTopUpCreateByExternalIdResponse.additionalProperties) + id = customerCreditTopUpCreateByExternalIdResponse.id + currency = customerCreditTopUpCreateByExternalIdResponse.currency + threshold = customerCreditTopUpCreateByExternalIdResponse.threshold + amount = customerCreditTopUpCreateByExternalIdResponse.amount + perUnitCostBasis = customerCreditTopUpCreateByExternalIdResponse.perUnitCostBasis + invoiceSettings = customerCreditTopUpCreateByExternalIdResponse.invoiceSettings + expiresAfter = customerCreditTopUpCreateByExternalIdResponse.expiresAfter + expiresAfterUnit = customerCreditTopUpCreateByExternalIdResponse.expiresAfterUnit + additionalProperties = + customerCreditTopUpCreateByExternalIdResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * The currency or custom pricing unit to use for this top-up. If this is a real-world @@ -168,8 +183,6 @@ private constructor( * The currency or custom pricing unit to use for this top-up. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } /** @@ -182,16 +195,12 @@ private constructor( * The threshold at which to trigger the top-up. If the balance is at or below this * threshold, the top-up will be triggered. */ - @JsonProperty("threshold") - @ExcludeMissing fun threshold(threshold: JsonField) = apply { this.threshold = threshold } /** The amount to increment when the threshold is reached. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount to increment when the threshold is reached. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } /** How much, in the customer's currency, to charge for each unit. */ @@ -199,8 +208,6 @@ private constructor( perUnitCostBasis(JsonField.of(perUnitCostBasis)) /** How much, in the customer's currency, to charge for each unit. */ - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } @@ -210,8 +217,6 @@ private constructor( invoiceSettings(JsonField.of(invoiceSettings)) /** Settings for invoices generated by triggered top-ups. */ - @JsonProperty("invoice_settings") - @ExcludeMissing fun invoiceSettings(invoiceSettings: JsonField) = apply { this.invoiceSettings = invoiceSettings } @@ -226,8 +231,6 @@ private constructor( * The number of days or months after which the top-up expires. If unspecified, it does not * expire. */ - @JsonProperty("expires_after") - @ExcludeMissing fun expiresAfter(expiresAfter: JsonField) = apply { this.expiresAfter = expiresAfter } /** The unit of expires_after. */ @@ -235,26 +238,29 @@ private constructor( expiresAfterUnit(JsonField.of(expiresAfterUnit)) /** The unit of expires_after. */ - @JsonProperty("expires_after_unit") - @ExcludeMissing fun expiresAfterUnit(expiresAfterUnit: JsonField) = apply { this.expiresAfterUnit = expiresAfterUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCreditTopUpCreateByExternalIdResponse = CustomerCreditTopUpCreateByExternalIdResponse( id, @@ -270,19 +276,26 @@ private constructor( } /** Settings for invoices generated by triggered top-ups. */ - @JsonDeserialize(builder = InvoiceSettings.Builder::class) @NoAutoDetect class InvoiceSettings + @JsonCreator private constructor( - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val memo: JsonField, - private val requireSuccessfulPayment: JsonField, - private val additionalProperties: Map, + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("memo") + @ExcludeMissing + private val memo: JsonField = JsonMissing.of(), + @JsonProperty("require_successful_payment") + @ExcludeMissing + private val requireSuccessfulPayment: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. @@ -332,6 +345,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoiceSettings = apply { if (!validated) { autoCollection() @@ -359,11 +374,11 @@ private constructor( @JvmSynthetic internal fun from(invoiceSettings: InvoiceSettings) = apply { - this.autoCollection = invoiceSettings.autoCollection - this.netTerms = invoiceSettings.netTerms - this.memo = invoiceSettings.memo - this.requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment - additionalProperties(invoiceSettings.additionalProperties) + autoCollection = invoiceSettings.autoCollection + netTerms = invoiceSettings.netTerms + memo = invoiceSettings.memo + requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment + additionalProperties = invoiceSettings.additionalProperties.toMutableMap() } /** @@ -377,8 +392,6 @@ private constructor( * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -393,16 +406,12 @@ private constructor( * The net terms determines the difference between the invoice date and the issue date * for the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } /** An optional memo to display on the invoice. */ fun memo(memo: String) = memo(JsonField.of(memo)) /** An optional memo to display on the invoice. */ - @JsonProperty("memo") - @ExcludeMissing fun memo(memo: JsonField) = apply { this.memo = memo } /** @@ -416,26 +425,29 @@ private constructor( * If true, new credit blocks created by this top-up will require that the corresponding * invoice is paid before they can be drawn down from. */ - @JsonProperty("require_successful_payment") - @ExcludeMissing fun requireSuccessfulPayment(requireSuccessfulPayment: JsonField) = apply { this.requireSuccessfulPayment = requireSuccessfulPayment } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceSettings = InvoiceSettings( autoCollection, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateParams.kt index d47dae23..9cbef739 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -81,50 +81,52 @@ constructor( } } - @JsonDeserialize(builder = CustomerCreditTopUpCreateBody.Builder::class) @NoAutoDetect class CustomerCreditTopUpCreateBody + @JsonCreator internal constructor( - private val amount: String?, - private val currency: String?, - private val invoiceSettings: InvoiceSettings?, - private val perUnitCostBasis: String?, - private val threshold: String?, - private val expiresAfter: Long?, - private val expiresAfterUnit: ExpiresAfterUnit?, - private val additionalProperties: Map, + @JsonProperty("amount") private val amount: String, + @JsonProperty("currency") private val currency: String, + @JsonProperty("invoice_settings") private val invoiceSettings: InvoiceSettings, + @JsonProperty("per_unit_cost_basis") private val perUnitCostBasis: String, + @JsonProperty("threshold") private val threshold: String, + @JsonProperty("expires_after") private val expiresAfter: Long?, + @JsonProperty("expires_after_unit") private val expiresAfterUnit: ExpiresAfterUnit?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The amount to increment when the threshold is reached. */ - @JsonProperty("amount") fun amount(): String? = amount + @JsonProperty("amount") fun amount(): String = amount /** * The currency or custom pricing unit to use for this top-up. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency /** Settings for invoices generated by triggered top-ups. */ - @JsonProperty("invoice_settings") fun invoiceSettings(): InvoiceSettings? = invoiceSettings + @JsonProperty("invoice_settings") fun invoiceSettings(): InvoiceSettings = invoiceSettings /** How much, in the customer's currency, to charge for each unit. */ - @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(): String? = perUnitCostBasis + @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(): String = perUnitCostBasis /** * The threshold at which to trigger the top-up. If the balance is at or below this * threshold, the top-up will be triggered. */ - @JsonProperty("threshold") fun threshold(): String? = threshold + @JsonProperty("threshold") fun threshold(): String = threshold /** * The number of days or months after which the top-up expires. If unspecified, it does not * expire. */ - @JsonProperty("expires_after") fun expiresAfter(): Long? = expiresAfter + @JsonProperty("expires_after") + fun expiresAfter(): Optional = Optional.ofNullable(expiresAfter) /** The unit of expires_after. */ @JsonProperty("expires_after_unit") - fun expiresAfterUnit(): ExpiresAfterUnit? = expiresAfterUnit + fun expiresAfterUnit(): Optional = Optional.ofNullable(expiresAfterUnit) @JsonAnyGetter @ExcludeMissing @@ -151,34 +153,32 @@ constructor( @JvmSynthetic internal fun from(customerCreditTopUpCreateBody: CustomerCreditTopUpCreateBody) = apply { - this.amount = customerCreditTopUpCreateBody.amount - this.currency = customerCreditTopUpCreateBody.currency - this.invoiceSettings = customerCreditTopUpCreateBody.invoiceSettings - this.perUnitCostBasis = customerCreditTopUpCreateBody.perUnitCostBasis - this.threshold = customerCreditTopUpCreateBody.threshold - this.expiresAfter = customerCreditTopUpCreateBody.expiresAfter - this.expiresAfterUnit = customerCreditTopUpCreateBody.expiresAfterUnit - additionalProperties(customerCreditTopUpCreateBody.additionalProperties) + amount = customerCreditTopUpCreateBody.amount + currency = customerCreditTopUpCreateBody.currency + invoiceSettings = customerCreditTopUpCreateBody.invoiceSettings + perUnitCostBasis = customerCreditTopUpCreateBody.perUnitCostBasis + threshold = customerCreditTopUpCreateBody.threshold + expiresAfter = customerCreditTopUpCreateBody.expiresAfter + expiresAfterUnit = customerCreditTopUpCreateBody.expiresAfterUnit + additionalProperties = + customerCreditTopUpCreateBody.additionalProperties.toMutableMap() } /** The amount to increment when the threshold is reached. */ - @JsonProperty("amount") fun amount(amount: String) = apply { this.amount = amount } + fun amount(amount: String) = apply { this.amount = amount } /** * The currency or custom pricing unit to use for this top-up. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** Settings for invoices generated by triggered top-ups. */ - @JsonProperty("invoice_settings") fun invoiceSettings(invoiceSettings: InvoiceSettings) = apply { this.invoiceSettings = invoiceSettings } /** How much, in the customer's currency, to charge for each unit. */ - @JsonProperty("per_unit_cost_basis") fun perUnitCostBasis(perUnitCostBasis: String) = apply { this.perUnitCostBasis = perUnitCostBasis } @@ -187,36 +187,38 @@ constructor( * The threshold at which to trigger the top-up. If the balance is at or below this * threshold, the top-up will be triggered. */ - @JsonProperty("threshold") fun threshold(threshold: String) = apply { this.threshold = threshold } /** * The number of days or months after which the top-up expires. If unspecified, it does * not expire. */ - @JsonProperty("expires_after") fun expiresAfter(expiresAfter: Long) = apply { this.expiresAfter = expiresAfter } /** The unit of expires_after. */ - @JsonProperty("expires_after_unit") fun expiresAfterUnit(expiresAfterUnit: ExpiresAfterUnit) = apply { this.expiresAfterUnit = expiresAfterUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCreditTopUpCreateBody = CustomerCreditTopUpCreateBody( checkNotNull(amount) { "`amount` is required but was not set" }, @@ -467,38 +469,40 @@ constructor( } /** Settings for invoices generated by triggered top-ups. */ - @JsonDeserialize(builder = InvoiceSettings.Builder::class) @NoAutoDetect class InvoiceSettings + @JsonCreator private constructor( - private val autoCollection: Boolean?, - private val netTerms: Long?, - private val memo: String?, - private val requireSuccessfulPayment: Boolean?, - private val additionalProperties: Map, + @JsonProperty("auto_collection") private val autoCollection: Boolean, + @JsonProperty("net_terms") private val netTerms: Long, + @JsonProperty("memo") private val memo: String?, + @JsonProperty("require_successful_payment") private val requireSuccessfulPayment: Boolean?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") fun autoCollection(): Boolean = autoCollection /** * The net terms determines the difference between the invoice date and the issue date for * the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") fun netTerms(): Long? = netTerms + @JsonProperty("net_terms") fun netTerms(): Long = netTerms /** An optional memo to display on the invoice. */ - @JsonProperty("memo") fun memo(): String? = memo + @JsonProperty("memo") fun memo(): Optional = Optional.ofNullable(memo) /** * If true, new credit blocks created by this top-up will require that the corresponding * invoice is paid before they can be drawn down from. */ @JsonProperty("require_successful_payment") - fun requireSuccessfulPayment(): Boolean? = requireSuccessfulPayment + fun requireSuccessfulPayment(): Optional = + Optional.ofNullable(requireSuccessfulPayment) @JsonAnyGetter @ExcludeMissing @@ -521,18 +525,17 @@ constructor( @JvmSynthetic internal fun from(invoiceSettings: InvoiceSettings) = apply { - this.autoCollection = invoiceSettings.autoCollection - this.netTerms = invoiceSettings.netTerms - this.memo = invoiceSettings.memo - this.requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment - additionalProperties(invoiceSettings.additionalProperties) + autoCollection = invoiceSettings.autoCollection + netTerms = invoiceSettings.netTerms + memo = invoiceSettings.memo + requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment + additionalProperties = invoiceSettings.additionalProperties.toMutableMap() } /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } @@ -541,35 +544,38 @@ constructor( * The net terms determines the difference between the invoice date and the issue date * for the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") fun netTerms(netTerms: Long) = apply { this.netTerms = netTerms } /** An optional memo to display on the invoice. */ - @JsonProperty("memo") fun memo(memo: String) = apply { this.memo = memo } + fun memo(memo: String) = apply { this.memo = memo } /** * If true, new credit blocks created by this top-up will require that the corresponding * invoice is paid before they can be drawn down from. */ - @JsonProperty("require_successful_payment") fun requireSuccessfulPayment(requireSuccessfulPayment: Boolean) = apply { this.requireSuccessfulPayment = requireSuccessfulPayment } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceSettings = InvoiceSettings( checkNotNull(autoCollection) { "`autoCollection` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateResponse.kt index 1b30edc6..6288a640 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateResponse.kt @@ -6,35 +6,47 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerCreditTopUpCreateResponse.Builder::class) @NoAutoDetect class CustomerCreditTopUpCreateResponse +@JsonCreator private constructor( - private val id: JsonField, - private val currency: JsonField, - private val threshold: JsonField, - private val amount: JsonField, - private val perUnitCostBasis: JsonField, - private val invoiceSettings: JsonField, - private val expiresAfter: JsonField, - private val expiresAfterUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("threshold") + @ExcludeMissing + private val threshold: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonProperty("invoice_settings") + @ExcludeMissing + private val invoiceSettings: JsonField = JsonMissing.of(), + @JsonProperty("expires_after") + @ExcludeMissing + private val expiresAfter: JsonField = JsonMissing.of(), + @JsonProperty("expires_after_unit") + @ExcludeMissing + private val expiresAfterUnit: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -105,6 +117,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerCreditTopUpCreateResponse = apply { if (!validated) { id() @@ -141,20 +155,21 @@ private constructor( @JvmSynthetic internal fun from(customerCreditTopUpCreateResponse: CustomerCreditTopUpCreateResponse) = apply { - this.id = customerCreditTopUpCreateResponse.id - this.currency = customerCreditTopUpCreateResponse.currency - this.threshold = customerCreditTopUpCreateResponse.threshold - this.amount = customerCreditTopUpCreateResponse.amount - this.perUnitCostBasis = customerCreditTopUpCreateResponse.perUnitCostBasis - this.invoiceSettings = customerCreditTopUpCreateResponse.invoiceSettings - this.expiresAfter = customerCreditTopUpCreateResponse.expiresAfter - this.expiresAfterUnit = customerCreditTopUpCreateResponse.expiresAfterUnit - additionalProperties(customerCreditTopUpCreateResponse.additionalProperties) + id = customerCreditTopUpCreateResponse.id + currency = customerCreditTopUpCreateResponse.currency + threshold = customerCreditTopUpCreateResponse.threshold + amount = customerCreditTopUpCreateResponse.amount + perUnitCostBasis = customerCreditTopUpCreateResponse.perUnitCostBasis + invoiceSettings = customerCreditTopUpCreateResponse.invoiceSettings + expiresAfter = customerCreditTopUpCreateResponse.expiresAfter + expiresAfterUnit = customerCreditTopUpCreateResponse.expiresAfterUnit + additionalProperties = + customerCreditTopUpCreateResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * The currency or custom pricing unit to use for this top-up. If this is a real-world @@ -166,8 +181,6 @@ private constructor( * The currency or custom pricing unit to use for this top-up. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } /** @@ -180,16 +193,12 @@ private constructor( * The threshold at which to trigger the top-up. If the balance is at or below this * threshold, the top-up will be triggered. */ - @JsonProperty("threshold") - @ExcludeMissing fun threshold(threshold: JsonField) = apply { this.threshold = threshold } /** The amount to increment when the threshold is reached. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount to increment when the threshold is reached. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } /** How much, in the customer's currency, to charge for each unit. */ @@ -197,8 +206,6 @@ private constructor( perUnitCostBasis(JsonField.of(perUnitCostBasis)) /** How much, in the customer's currency, to charge for each unit. */ - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } @@ -208,8 +215,6 @@ private constructor( invoiceSettings(JsonField.of(invoiceSettings)) /** Settings for invoices generated by triggered top-ups. */ - @JsonProperty("invoice_settings") - @ExcludeMissing fun invoiceSettings(invoiceSettings: JsonField) = apply { this.invoiceSettings = invoiceSettings } @@ -224,8 +229,6 @@ private constructor( * The number of days or months after which the top-up expires. If unspecified, it does not * expire. */ - @JsonProperty("expires_after") - @ExcludeMissing fun expiresAfter(expiresAfter: JsonField) = apply { this.expiresAfter = expiresAfter } /** The unit of expires_after. */ @@ -233,26 +236,29 @@ private constructor( expiresAfterUnit(JsonField.of(expiresAfterUnit)) /** The unit of expires_after. */ - @JsonProperty("expires_after_unit") - @ExcludeMissing fun expiresAfterUnit(expiresAfterUnit: JsonField) = apply { this.expiresAfterUnit = expiresAfterUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCreditTopUpCreateResponse = CustomerCreditTopUpCreateResponse( id, @@ -268,19 +274,26 @@ private constructor( } /** Settings for invoices generated by triggered top-ups. */ - @JsonDeserialize(builder = InvoiceSettings.Builder::class) @NoAutoDetect class InvoiceSettings + @JsonCreator private constructor( - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val memo: JsonField, - private val requireSuccessfulPayment: JsonField, - private val additionalProperties: Map, + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("memo") + @ExcludeMissing + private val memo: JsonField = JsonMissing.of(), + @JsonProperty("require_successful_payment") + @ExcludeMissing + private val requireSuccessfulPayment: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. @@ -330,6 +343,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoiceSettings = apply { if (!validated) { autoCollection() @@ -357,11 +372,11 @@ private constructor( @JvmSynthetic internal fun from(invoiceSettings: InvoiceSettings) = apply { - this.autoCollection = invoiceSettings.autoCollection - this.netTerms = invoiceSettings.netTerms - this.memo = invoiceSettings.memo - this.requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment - additionalProperties(invoiceSettings.additionalProperties) + autoCollection = invoiceSettings.autoCollection + netTerms = invoiceSettings.netTerms + memo = invoiceSettings.memo + requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment + additionalProperties = invoiceSettings.additionalProperties.toMutableMap() } /** @@ -375,8 +390,6 @@ private constructor( * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -391,16 +404,12 @@ private constructor( * The net terms determines the difference between the invoice date and the issue date * for the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } /** An optional memo to display on the invoice. */ fun memo(memo: String) = memo(JsonField.of(memo)) /** An optional memo to display on the invoice. */ - @JsonProperty("memo") - @ExcludeMissing fun memo(memo: JsonField) = apply { this.memo = memo } /** @@ -414,26 +423,29 @@ private constructor( * If true, new credit blocks created by this top-up will require that the corresponding * invoice is paid before they can be drawn down from. */ - @JsonProperty("require_successful_payment") - @ExcludeMissing fun requireSuccessfulPayment(requireSuccessfulPayment: JsonField) = apply { this.requireSuccessfulPayment = requireSuccessfulPayment } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceSettings = InvoiceSettings( autoCollection, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdPage.kt index 822e83e8..d95bc59d 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.customers.credits.TopUpService import java.util.Objects @@ -86,13 +87,17 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = + JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -160,7 +165,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -168,12 +172,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdPageAsync.kt index fd664b5b..6328ad6e 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.customers.credits.TopUpServiceAsync import java.util.Objects @@ -89,13 +90,17 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = + JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -163,7 +168,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -171,12 +175,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdResponse.kt index 73d72adf..425c642d 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListByExternalIdResponse.kt @@ -6,35 +6,47 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerCreditTopUpListByExternalIdResponse.Builder::class) @NoAutoDetect class CustomerCreditTopUpListByExternalIdResponse +@JsonCreator private constructor( - private val id: JsonField, - private val currency: JsonField, - private val threshold: JsonField, - private val amount: JsonField, - private val perUnitCostBasis: JsonField, - private val invoiceSettings: JsonField, - private val expiresAfter: JsonField, - private val expiresAfterUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("threshold") + @ExcludeMissing + private val threshold: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonProperty("invoice_settings") + @ExcludeMissing + private val invoiceSettings: JsonField = JsonMissing.of(), + @JsonProperty("expires_after") + @ExcludeMissing + private val expiresAfter: JsonField = JsonMissing.of(), + @JsonProperty("expires_after_unit") + @ExcludeMissing + private val expiresAfterUnit: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -105,6 +117,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerCreditTopUpListByExternalIdResponse = apply { if (!validated) { id() @@ -142,20 +156,21 @@ private constructor( internal fun from( customerCreditTopUpListByExternalIdResponse: CustomerCreditTopUpListByExternalIdResponse ) = apply { - this.id = customerCreditTopUpListByExternalIdResponse.id - this.currency = customerCreditTopUpListByExternalIdResponse.currency - this.threshold = customerCreditTopUpListByExternalIdResponse.threshold - this.amount = customerCreditTopUpListByExternalIdResponse.amount - this.perUnitCostBasis = customerCreditTopUpListByExternalIdResponse.perUnitCostBasis - this.invoiceSettings = customerCreditTopUpListByExternalIdResponse.invoiceSettings - this.expiresAfter = customerCreditTopUpListByExternalIdResponse.expiresAfter - this.expiresAfterUnit = customerCreditTopUpListByExternalIdResponse.expiresAfterUnit - additionalProperties(customerCreditTopUpListByExternalIdResponse.additionalProperties) + id = customerCreditTopUpListByExternalIdResponse.id + currency = customerCreditTopUpListByExternalIdResponse.currency + threshold = customerCreditTopUpListByExternalIdResponse.threshold + amount = customerCreditTopUpListByExternalIdResponse.amount + perUnitCostBasis = customerCreditTopUpListByExternalIdResponse.perUnitCostBasis + invoiceSettings = customerCreditTopUpListByExternalIdResponse.invoiceSettings + expiresAfter = customerCreditTopUpListByExternalIdResponse.expiresAfter + expiresAfterUnit = customerCreditTopUpListByExternalIdResponse.expiresAfterUnit + additionalProperties = + customerCreditTopUpListByExternalIdResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * The currency or custom pricing unit to use for this top-up. If this is a real-world @@ -167,8 +182,6 @@ private constructor( * The currency or custom pricing unit to use for this top-up. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } /** @@ -181,16 +194,12 @@ private constructor( * The threshold at which to trigger the top-up. If the balance is at or below this * threshold, the top-up will be triggered. */ - @JsonProperty("threshold") - @ExcludeMissing fun threshold(threshold: JsonField) = apply { this.threshold = threshold } /** The amount to increment when the threshold is reached. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount to increment when the threshold is reached. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } /** How much, in the customer's currency, to charge for each unit. */ @@ -198,8 +207,6 @@ private constructor( perUnitCostBasis(JsonField.of(perUnitCostBasis)) /** How much, in the customer's currency, to charge for each unit. */ - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } @@ -209,8 +216,6 @@ private constructor( invoiceSettings(JsonField.of(invoiceSettings)) /** Settings for invoices generated by triggered top-ups. */ - @JsonProperty("invoice_settings") - @ExcludeMissing fun invoiceSettings(invoiceSettings: JsonField) = apply { this.invoiceSettings = invoiceSettings } @@ -225,8 +230,6 @@ private constructor( * The number of days or months after which the top-up expires. If unspecified, it does not * expire. */ - @JsonProperty("expires_after") - @ExcludeMissing fun expiresAfter(expiresAfter: JsonField) = apply { this.expiresAfter = expiresAfter } /** The unit of expires_after. */ @@ -234,26 +237,29 @@ private constructor( expiresAfterUnit(JsonField.of(expiresAfterUnit)) /** The unit of expires_after. */ - @JsonProperty("expires_after_unit") - @ExcludeMissing fun expiresAfterUnit(expiresAfterUnit: JsonField) = apply { this.expiresAfterUnit = expiresAfterUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCreditTopUpListByExternalIdResponse = CustomerCreditTopUpListByExternalIdResponse( id, @@ -269,19 +275,26 @@ private constructor( } /** Settings for invoices generated by triggered top-ups. */ - @JsonDeserialize(builder = InvoiceSettings.Builder::class) @NoAutoDetect class InvoiceSettings + @JsonCreator private constructor( - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val memo: JsonField, - private val requireSuccessfulPayment: JsonField, - private val additionalProperties: Map, + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("memo") + @ExcludeMissing + private val memo: JsonField = JsonMissing.of(), + @JsonProperty("require_successful_payment") + @ExcludeMissing + private val requireSuccessfulPayment: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. @@ -331,6 +344,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoiceSettings = apply { if (!validated) { autoCollection() @@ -358,11 +373,11 @@ private constructor( @JvmSynthetic internal fun from(invoiceSettings: InvoiceSettings) = apply { - this.autoCollection = invoiceSettings.autoCollection - this.netTerms = invoiceSettings.netTerms - this.memo = invoiceSettings.memo - this.requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment - additionalProperties(invoiceSettings.additionalProperties) + autoCollection = invoiceSettings.autoCollection + netTerms = invoiceSettings.netTerms + memo = invoiceSettings.memo + requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment + additionalProperties = invoiceSettings.additionalProperties.toMutableMap() } /** @@ -376,8 +391,6 @@ private constructor( * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -392,16 +405,12 @@ private constructor( * The net terms determines the difference between the invoice date and the issue date * for the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } /** An optional memo to display on the invoice. */ fun memo(memo: String) = memo(JsonField.of(memo)) /** An optional memo to display on the invoice. */ - @JsonProperty("memo") - @ExcludeMissing fun memo(memo: JsonField) = apply { this.memo = memo } /** @@ -415,26 +424,29 @@ private constructor( * If true, new credit blocks created by this top-up will require that the corresponding * invoice is paid before they can be drawn down from. */ - @JsonProperty("require_successful_payment") - @ExcludeMissing fun requireSuccessfulPayment(requireSuccessfulPayment: JsonField) = apply { this.requireSuccessfulPayment = requireSuccessfulPayment } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceSettings = InvoiceSettings( autoCollection, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListPage.kt index 0083d62e..0b8f45f5 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.customers.credits.TopUpService import java.util.Objects @@ -86,13 +87,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -157,7 +161,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -165,12 +168,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListPageAsync.kt index 979b99be..8b22d22a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.customers.credits.TopUpServiceAsync import java.util.Objects @@ -89,13 +90,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -160,7 +164,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -168,12 +171,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListResponse.kt index 52c0f4b6..1d956ace 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerCreditTopUpListResponse.kt @@ -6,35 +6,47 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = CustomerCreditTopUpListResponse.Builder::class) @NoAutoDetect class CustomerCreditTopUpListResponse +@JsonCreator private constructor( - private val id: JsonField, - private val currency: JsonField, - private val threshold: JsonField, - private val amount: JsonField, - private val perUnitCostBasis: JsonField, - private val invoiceSettings: JsonField, - private val expiresAfter: JsonField, - private val expiresAfterUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("threshold") + @ExcludeMissing + private val threshold: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_cost_basis") + @ExcludeMissing + private val perUnitCostBasis: JsonField = JsonMissing.of(), + @JsonProperty("invoice_settings") + @ExcludeMissing + private val invoiceSettings: JsonField = JsonMissing.of(), + @JsonProperty("expires_after") + @ExcludeMissing + private val expiresAfter: JsonField = JsonMissing.of(), + @JsonProperty("expires_after_unit") + @ExcludeMissing + private val expiresAfterUnit: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -105,6 +117,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerCreditTopUpListResponse = apply { if (!validated) { id() @@ -141,20 +155,21 @@ private constructor( @JvmSynthetic internal fun from(customerCreditTopUpListResponse: CustomerCreditTopUpListResponse) = apply { - this.id = customerCreditTopUpListResponse.id - this.currency = customerCreditTopUpListResponse.currency - this.threshold = customerCreditTopUpListResponse.threshold - this.amount = customerCreditTopUpListResponse.amount - this.perUnitCostBasis = customerCreditTopUpListResponse.perUnitCostBasis - this.invoiceSettings = customerCreditTopUpListResponse.invoiceSettings - this.expiresAfter = customerCreditTopUpListResponse.expiresAfter - this.expiresAfterUnit = customerCreditTopUpListResponse.expiresAfterUnit - additionalProperties(customerCreditTopUpListResponse.additionalProperties) + id = customerCreditTopUpListResponse.id + currency = customerCreditTopUpListResponse.currency + threshold = customerCreditTopUpListResponse.threshold + amount = customerCreditTopUpListResponse.amount + perUnitCostBasis = customerCreditTopUpListResponse.perUnitCostBasis + invoiceSettings = customerCreditTopUpListResponse.invoiceSettings + expiresAfter = customerCreditTopUpListResponse.expiresAfter + expiresAfterUnit = customerCreditTopUpListResponse.expiresAfterUnit + additionalProperties = + customerCreditTopUpListResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * The currency or custom pricing unit to use for this top-up. If this is a real-world @@ -166,8 +181,6 @@ private constructor( * The currency or custom pricing unit to use for this top-up. If this is a real-world * currency, it must match the customer's invoicing currency. */ - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } /** @@ -180,16 +193,12 @@ private constructor( * The threshold at which to trigger the top-up. If the balance is at or below this * threshold, the top-up will be triggered. */ - @JsonProperty("threshold") - @ExcludeMissing fun threshold(threshold: JsonField) = apply { this.threshold = threshold } /** The amount to increment when the threshold is reached. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount to increment when the threshold is reached. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } /** How much, in the customer's currency, to charge for each unit. */ @@ -197,8 +206,6 @@ private constructor( perUnitCostBasis(JsonField.of(perUnitCostBasis)) /** How much, in the customer's currency, to charge for each unit. */ - @JsonProperty("per_unit_cost_basis") - @ExcludeMissing fun perUnitCostBasis(perUnitCostBasis: JsonField) = apply { this.perUnitCostBasis = perUnitCostBasis } @@ -208,8 +215,6 @@ private constructor( invoiceSettings(JsonField.of(invoiceSettings)) /** Settings for invoices generated by triggered top-ups. */ - @JsonProperty("invoice_settings") - @ExcludeMissing fun invoiceSettings(invoiceSettings: JsonField) = apply { this.invoiceSettings = invoiceSettings } @@ -224,8 +229,6 @@ private constructor( * The number of days or months after which the top-up expires. If unspecified, it does not * expire. */ - @JsonProperty("expires_after") - @ExcludeMissing fun expiresAfter(expiresAfter: JsonField) = apply { this.expiresAfter = expiresAfter } /** The unit of expires_after. */ @@ -233,26 +236,29 @@ private constructor( expiresAfterUnit(JsonField.of(expiresAfterUnit)) /** The unit of expires_after. */ - @JsonProperty("expires_after_unit") - @ExcludeMissing fun expiresAfterUnit(expiresAfterUnit: JsonField) = apply { this.expiresAfterUnit = expiresAfterUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerCreditTopUpListResponse = CustomerCreditTopUpListResponse( id, @@ -268,19 +274,26 @@ private constructor( } /** Settings for invoices generated by triggered top-ups. */ - @JsonDeserialize(builder = InvoiceSettings.Builder::class) @NoAutoDetect class InvoiceSettings + @JsonCreator private constructor( - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val memo: JsonField, - private val requireSuccessfulPayment: JsonField, - private val additionalProperties: Map, + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("memo") + @ExcludeMissing + private val memo: JsonField = JsonMissing.of(), + @JsonProperty("require_successful_payment") + @ExcludeMissing + private val requireSuccessfulPayment: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. @@ -330,6 +343,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoiceSettings = apply { if (!validated) { autoCollection() @@ -357,11 +372,11 @@ private constructor( @JvmSynthetic internal fun from(invoiceSettings: InvoiceSettings) = apply { - this.autoCollection = invoiceSettings.autoCollection - this.netTerms = invoiceSettings.netTerms - this.memo = invoiceSettings.memo - this.requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment - additionalProperties(invoiceSettings.additionalProperties) + autoCollection = invoiceSettings.autoCollection + netTerms = invoiceSettings.netTerms + memo = invoiceSettings.memo + requireSuccessfulPayment = invoiceSettings.requireSuccessfulPayment + additionalProperties = invoiceSettings.additionalProperties.toMutableMap() } /** @@ -375,8 +390,6 @@ private constructor( * Whether the credits purchase invoice should auto collect with the customer's saved * payment method. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -391,16 +404,12 @@ private constructor( * The net terms determines the difference between the invoice date and the issue date * for the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } /** An optional memo to display on the invoice. */ fun memo(memo: String) = memo(JsonField.of(memo)) /** An optional memo to display on the invoice. */ - @JsonProperty("memo") - @ExcludeMissing fun memo(memo: JsonField) = apply { this.memo = memo } /** @@ -414,26 +423,29 @@ private constructor( * If true, new credit blocks created by this top-up will require that the corresponding * invoice is paid before they can be drawn down from. */ - @JsonProperty("require_successful_payment") - @ExcludeMissing fun requireSuccessfulPayment(requireSuccessfulPayment: JsonField) = apply { this.requireSuccessfulPayment = requireSuccessfulPayment } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceSettings = InvoiceSettings( autoCollection, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerListPage.kt index fcfe856c..ac0b5e1a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.CustomerService import java.util.Objects @@ -82,13 +83,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -152,18 +155,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerListPageAsync.kt index 0f144d9c..2daa67bb 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.CustomerServiceAsync import java.util.Objects @@ -89,13 +90,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -159,18 +162,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerUpdateByExternalIdParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerUpdateByExternalIdParams.kt index aa29cfca..02ea78fd 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerUpdateByExternalIdParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerUpdateByExternalIdParams.kt @@ -18,12 +18,12 @@ import com.withorb.api.core.BaseSerializer import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField -import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -130,74 +130,82 @@ constructor( } } - @JsonDeserialize(builder = CustomerUpdateByExternalIdBody.Builder::class) @NoAutoDetect class CustomerUpdateByExternalIdBody + @JsonCreator internal constructor( + @JsonProperty("accounting_sync_configuration") private val accountingSyncConfiguration: AccountingSyncConfiguration?, - private val additionalEmails: List?, - private val autoCollection: Boolean?, - private val billingAddress: BillingAddress?, - private val currency: String?, - private val email: String?, - private val emailDelivery: Boolean?, - private val externalCustomerId: String?, - private val metadata: Metadata?, - private val name: String?, - private val paymentProvider: PaymentProvider?, - private val paymentProviderId: String?, + @JsonProperty("additional_emails") private val additionalEmails: List?, + @JsonProperty("auto_collection") private val autoCollection: Boolean?, + @JsonProperty("billing_address") private val billingAddress: BillingAddress?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("email") private val email: String?, + @JsonProperty("email_delivery") private val emailDelivery: Boolean?, + @JsonProperty("external_customer_id") private val externalCustomerId: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("name") private val name: String?, + @JsonProperty("payment_provider") private val paymentProvider: PaymentProvider?, + @JsonProperty("payment_provider_id") private val paymentProviderId: String?, + @JsonProperty("reporting_configuration") private val reportingConfiguration: ReportingConfiguration?, - private val shippingAddress: ShippingAddress?, - private val taxConfiguration: TaxConfiguration?, - private val taxId: TaxId?, - private val additionalProperties: Map, + @JsonProperty("shipping_address") private val shippingAddress: ShippingAddress?, + @JsonProperty("tax_configuration") private val taxConfiguration: TaxConfiguration?, + @JsonProperty("tax_id") private val taxId: TaxId?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonProperty("accounting_sync_configuration") - fun accountingSyncConfiguration(): AccountingSyncConfiguration? = - accountingSyncConfiguration + fun accountingSyncConfiguration(): Optional = + Optional.ofNullable(accountingSyncConfiguration) /** * Additional email addresses for this customer. If populated, these email addresses will be * CC'd for customer communications. */ - @JsonProperty("additional_emails") fun additionalEmails(): List? = additionalEmails + @JsonProperty("additional_emails") + fun additionalEmails(): Optional> = Optional.ofNullable(additionalEmails) /** * Used to determine if invoices for this customer will automatically attempt to charge a * saved payment method, if available. This parameter defaults to `True` when a payment * provider is provided on customer creation. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") + fun autoCollection(): Optional = Optional.ofNullable(autoCollection) - @JsonProperty("billing_address") fun billingAddress(): BillingAddress? = billingAddress + @JsonProperty("billing_address") + fun billingAddress(): Optional = Optional.ofNullable(billingAddress) /** * An ISO 4217 currency string used for the customer's invoices and balance. If not set at * creation time, will be set at subscription creation time. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** A valid customer email, to be used for invoicing and notifications. */ - @JsonProperty("email") fun email(): String? = email + @JsonProperty("email") fun email(): Optional = Optional.ofNullable(email) - @JsonProperty("email_delivery") fun emailDelivery(): Boolean? = emailDelivery + @JsonProperty("email_delivery") + fun emailDelivery(): Optional = Optional.ofNullable(emailDelivery) /** * The external customer ID. This can only be set if empty and the customer has no past or * current subscriptions. */ - @JsonProperty("external_customer_id") fun externalCustomerId(): String? = externalCustomerId + @JsonProperty("external_customer_id") + fun externalCustomerId(): Optional = Optional.ofNullable(externalCustomerId) /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** The full name of the customer */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): Optional = Optional.ofNullable(name) /** * This is used for creating charges or invoices in an external system via Orb. When not in @@ -206,21 +214,25 @@ constructor( * - if the provider is an invoicing provider (`stripe_invoice`, `quickbooks`, `bill.com`, * `netsuite`), any product mappings must first be configured with the Orb team. */ - @JsonProperty("payment_provider") fun paymentProvider(): PaymentProvider? = paymentProvider + @JsonProperty("payment_provider") + fun paymentProvider(): Optional = Optional.ofNullable(paymentProvider) /** * The ID of this customer in an external payments solution, such as Stripe. This is used * for creating charges or invoices in the external system via Orb. */ - @JsonProperty("payment_provider_id") fun paymentProviderId(): String? = paymentProviderId + @JsonProperty("payment_provider_id") + fun paymentProviderId(): Optional = Optional.ofNullable(paymentProviderId) @JsonProperty("reporting_configuration") - fun reportingConfiguration(): ReportingConfiguration? = reportingConfiguration + fun reportingConfiguration(): Optional = + Optional.ofNullable(reportingConfiguration) - @JsonProperty("shipping_address") fun shippingAddress(): ShippingAddress? = shippingAddress + @JsonProperty("shipping_address") + fun shippingAddress(): Optional = Optional.ofNullable(shippingAddress) @JsonProperty("tax_configuration") - fun taxConfiguration(): TaxConfiguration? = taxConfiguration + fun taxConfiguration(): Optional = Optional.ofNullable(taxConfiguration) /** * Tax IDs are commonly required to be displayed on customer invoices, which are added to @@ -328,7 +340,7 @@ constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonProperty("tax_id") fun taxId(): TaxId? = taxId + @JsonProperty("tax_id") fun taxId(): Optional = Optional.ofNullable(taxId) @JsonAnyGetter @ExcludeMissing @@ -364,28 +376,28 @@ constructor( @JvmSynthetic internal fun from(customerUpdateByExternalIdBody: CustomerUpdateByExternalIdBody) = apply { - this.accountingSyncConfiguration = + accountingSyncConfiguration = customerUpdateByExternalIdBody.accountingSyncConfiguration - this.additionalEmails = customerUpdateByExternalIdBody.additionalEmails - this.autoCollection = customerUpdateByExternalIdBody.autoCollection - this.billingAddress = customerUpdateByExternalIdBody.billingAddress - this.currency = customerUpdateByExternalIdBody.currency - this.email = customerUpdateByExternalIdBody.email - this.emailDelivery = customerUpdateByExternalIdBody.emailDelivery - this.externalCustomerId = customerUpdateByExternalIdBody.externalCustomerId - this.metadata = customerUpdateByExternalIdBody.metadata - this.name = customerUpdateByExternalIdBody.name - this.paymentProvider = customerUpdateByExternalIdBody.paymentProvider - this.paymentProviderId = customerUpdateByExternalIdBody.paymentProviderId - this.reportingConfiguration = - customerUpdateByExternalIdBody.reportingConfiguration - this.shippingAddress = customerUpdateByExternalIdBody.shippingAddress - this.taxConfiguration = customerUpdateByExternalIdBody.taxConfiguration - this.taxId = customerUpdateByExternalIdBody.taxId - additionalProperties(customerUpdateByExternalIdBody.additionalProperties) + additionalEmails = + customerUpdateByExternalIdBody.additionalEmails?.toMutableList() + autoCollection = customerUpdateByExternalIdBody.autoCollection + billingAddress = customerUpdateByExternalIdBody.billingAddress + currency = customerUpdateByExternalIdBody.currency + email = customerUpdateByExternalIdBody.email + emailDelivery = customerUpdateByExternalIdBody.emailDelivery + externalCustomerId = customerUpdateByExternalIdBody.externalCustomerId + metadata = customerUpdateByExternalIdBody.metadata + name = customerUpdateByExternalIdBody.name + paymentProvider = customerUpdateByExternalIdBody.paymentProvider + paymentProviderId = customerUpdateByExternalIdBody.paymentProviderId + reportingConfiguration = customerUpdateByExternalIdBody.reportingConfiguration + shippingAddress = customerUpdateByExternalIdBody.shippingAddress + taxConfiguration = customerUpdateByExternalIdBody.taxConfiguration + taxId = customerUpdateByExternalIdBody.taxId + additionalProperties = + customerUpdateByExternalIdBody.additionalProperties.toMutableMap() } - @JsonProperty("accounting_sync_configuration") fun accountingSyncConfiguration( accountingSyncConfiguration: AccountingSyncConfiguration ) = apply { this.accountingSyncConfiguration = accountingSyncConfiguration } @@ -394,7 +406,6 @@ constructor( * Additional email addresses for this customer. If populated, these email addresses * will be CC'd for customer communications. */ - @JsonProperty("additional_emails") fun additionalEmails(additionalEmails: List) = apply { this.additionalEmails = additionalEmails } @@ -404,12 +415,10 @@ constructor( * a saved payment method, if available. This parameter defaults to `True` when a * payment provider is provided on customer creation. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } - @JsonProperty("billing_address") fun billingAddress(billingAddress: BillingAddress) = apply { this.billingAddress = billingAddress } @@ -418,20 +427,17 @@ constructor( * An ISO 4217 currency string used for the customer's invoices and balance. If not set * at creation time, will be set at subscription creation time. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** A valid customer email, to be used for invoicing and notifications. */ - @JsonProperty("email") fun email(email: String) = apply { this.email = email } + fun email(email: String) = apply { this.email = email } - @JsonProperty("email_delivery") fun emailDelivery(emailDelivery: Boolean) = apply { this.emailDelivery = emailDelivery } /** * The external customer ID. This can only be set if empty and the customer has no past * or current subscriptions. */ - @JsonProperty("external_customer_id") fun externalCustomerId(externalCustomerId: String) = apply { this.externalCustomerId = externalCustomerId } @@ -441,11 +447,10 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** The full name of the customer */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * This is used for creating charges or invoices in an external system via Orb. When not @@ -455,7 +460,6 @@ constructor( * `bill.com`, `netsuite`), any product mappings must first be configured with the Orb * team. */ - @JsonProperty("payment_provider") fun paymentProvider(paymentProvider: PaymentProvider) = apply { this.paymentProvider = paymentProvider } @@ -464,22 +468,18 @@ constructor( * The ID of this customer in an external payments solution, such as Stripe. This is * used for creating charges or invoices in the external system via Orb. */ - @JsonProperty("payment_provider_id") fun paymentProviderId(paymentProviderId: String) = apply { this.paymentProviderId = paymentProviderId } - @JsonProperty("reporting_configuration") fun reportingConfiguration(reportingConfiguration: ReportingConfiguration) = apply { this.reportingConfiguration = reportingConfiguration } - @JsonProperty("shipping_address") fun shippingAddress(shippingAddress: ShippingAddress) = apply { this.shippingAddress = shippingAddress } - @JsonProperty("tax_configuration") fun taxConfiguration(taxConfiguration: TaxConfiguration) = apply { this.taxConfiguration = taxConfiguration } @@ -590,22 +590,27 @@ constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonProperty("tax_id") fun taxId(taxId: TaxId) = apply { this.taxId = taxId } + fun taxId(taxId: TaxId) = apply { this.taxId = taxId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerUpdateByExternalIdBody = CustomerUpdateByExternalIdBody( accountingSyncConfiguration, @@ -1068,19 +1073,22 @@ constructor( ) } - @JsonDeserialize(builder = AccountingSyncConfiguration.Builder::class) @NoAutoDetect class AccountingSyncConfiguration + @JsonCreator private constructor( - private val excluded: Boolean?, + @JsonProperty("excluded") private val excluded: Boolean?, + @JsonProperty("accounting_providers") private val accountingProviders: List?, - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("excluded") fun excluded(): Boolean? = excluded + @JsonProperty("excluded") fun excluded(): Optional = Optional.ofNullable(excluded) @JsonProperty("accounting_providers") - fun accountingProviders(): List? = accountingProviders + fun accountingProviders(): Optional> = + Optional.ofNullable(accountingProviders) @JsonAnyGetter @ExcludeMissing @@ -1101,33 +1109,38 @@ constructor( @JvmSynthetic internal fun from(accountingSyncConfiguration: AccountingSyncConfiguration) = apply { - this.excluded = accountingSyncConfiguration.excluded - this.accountingProviders = accountingSyncConfiguration.accountingProviders - additionalProperties(accountingSyncConfiguration.additionalProperties) + excluded = accountingSyncConfiguration.excluded + accountingProviders = + accountingSyncConfiguration.accountingProviders?.toMutableList() + additionalProperties = + accountingSyncConfiguration.additionalProperties.toMutableMap() } - @JsonProperty("excluded") fun excluded(excluded: Boolean) = apply { this.excluded = excluded } - @JsonProperty("accounting_providers") fun accountingProviders(accountingProviders: List) = apply { this.accountingProviders = accountingProviders } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AccountingSyncConfiguration = AccountingSyncConfiguration( excluded, @@ -1136,19 +1149,20 @@ constructor( ) } - @JsonDeserialize(builder = AccountingProvider.Builder::class) @NoAutoDetect class AccountingProvider + @JsonCreator private constructor( - private val providerType: String?, - private val externalProviderId: String?, - private val additionalProperties: Map, + @JsonProperty("provider_type") private val providerType: String, + @JsonProperty("external_provider_id") private val externalProviderId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("provider_type") fun providerType(): String? = providerType + @JsonProperty("provider_type") fun providerType(): String = providerType @JsonProperty("external_provider_id") - fun externalProviderId(): String? = externalProviderId + fun externalProviderId(): String = externalProviderId @JsonAnyGetter @ExcludeMissing @@ -1169,27 +1183,24 @@ constructor( @JvmSynthetic internal fun from(accountingProvider: AccountingProvider) = apply { - this.providerType = accountingProvider.providerType - this.externalProviderId = accountingProvider.externalProviderId - additionalProperties(accountingProvider.additionalProperties) + providerType = accountingProvider.providerType + externalProviderId = accountingProvider.externalProviderId + additionalProperties = accountingProvider.additionalProperties.toMutableMap() } - @JsonProperty("provider_type") fun providerType(providerType: String) = apply { this.providerType = providerType } - @JsonProperty("external_provider_id") fun externalProviderId(externalProviderId: String) = apply { this.externalProviderId = externalProviderId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1197,6 +1208,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AccountingProvider = AccountingProvider( checkNotNull(providerType) { "`providerType` is required but was not set" }, @@ -1243,30 +1262,32 @@ constructor( "AccountingSyncConfiguration{excluded=$excluded, accountingProviders=$accountingProviders, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingAddress.Builder::class) @NoAutoDetect class BillingAddress + @JsonCreator private constructor( - private val line1: String?, - private val line2: String?, - private val city: String?, - private val state: String?, - private val postalCode: String?, - private val country: String?, - private val additionalProperties: Map, + @JsonProperty("line1") private val line1: String?, + @JsonProperty("line2") private val line2: String?, + @JsonProperty("city") private val city: String?, + @JsonProperty("state") private val state: String?, + @JsonProperty("postal_code") private val postalCode: String?, + @JsonProperty("country") private val country: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("line1") fun line1(): String? = line1 + @JsonProperty("line1") fun line1(): Optional = Optional.ofNullable(line1) - @JsonProperty("line2") fun line2(): String? = line2 + @JsonProperty("line2") fun line2(): Optional = Optional.ofNullable(line2) - @JsonProperty("city") fun city(): String? = city + @JsonProperty("city") fun city(): Optional = Optional.ofNullable(city) - @JsonProperty("state") fun state(): String? = state + @JsonProperty("state") fun state(): Optional = Optional.ofNullable(state) - @JsonProperty("postal_code") fun postalCode(): String? = postalCode + @JsonProperty("postal_code") + fun postalCode(): Optional = Optional.ofNullable(postalCode) - @JsonProperty("country") fun country(): String? = country + @JsonProperty("country") fun country(): Optional = Optional.ofNullable(country) @JsonAnyGetter @ExcludeMissing @@ -1291,42 +1312,46 @@ constructor( @JvmSynthetic internal fun from(billingAddress: BillingAddress) = apply { - this.line1 = billingAddress.line1 - this.line2 = billingAddress.line2 - this.city = billingAddress.city - this.state = billingAddress.state - this.postalCode = billingAddress.postalCode - this.country = billingAddress.country - additionalProperties(billingAddress.additionalProperties) + line1 = billingAddress.line1 + line2 = billingAddress.line2 + city = billingAddress.city + state = billingAddress.state + postalCode = billingAddress.postalCode + country = billingAddress.country + additionalProperties = billingAddress.additionalProperties.toMutableMap() } - @JsonProperty("line1") fun line1(line1: String) = apply { this.line1 = line1 } + fun line1(line1: String) = apply { this.line1 = line1 } - @JsonProperty("line2") fun line2(line2: String) = apply { this.line2 = line2 } + fun line2(line2: String) = apply { this.line2 = line2 } - @JsonProperty("city") fun city(city: String) = apply { this.city = city } + fun city(city: String) = apply { this.city = city } - @JsonProperty("state") fun state(state: String) = apply { this.state = state } + fun state(state: String) = apply { this.state = state } - @JsonProperty("postal_code") fun postalCode(postalCode: String) = apply { this.postalCode = postalCode } - @JsonProperty("country") fun country(country: String) = apply { this.country = country } + fun country(country: String) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingAddress = BillingAddress( line1, @@ -1362,11 +1387,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1386,23 +1412,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1498,15 +1529,16 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ReportingConfiguration.Builder::class) @NoAutoDetect class ReportingConfiguration + @JsonCreator private constructor( - private val exempt: Boolean?, - private val additionalProperties: Map, + @JsonProperty("exempt") private val exempt: Boolean, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("exempt") fun exempt(): Boolean? = exempt + @JsonProperty("exempt") fun exempt(): Boolean = exempt @JsonAnyGetter @ExcludeMissing @@ -1526,26 +1558,31 @@ constructor( @JvmSynthetic internal fun from(reportingConfiguration: ReportingConfiguration) = apply { - this.exempt = reportingConfiguration.exempt - additionalProperties(reportingConfiguration.additionalProperties) + exempt = reportingConfiguration.exempt + additionalProperties = reportingConfiguration.additionalProperties.toMutableMap() } - @JsonProperty("exempt") fun exempt(exempt: Boolean) = apply { this.exempt = exempt } + fun exempt(exempt: Boolean) = apply { this.exempt = exempt } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ReportingConfiguration = ReportingConfiguration( checkNotNull(exempt) { "`exempt` is required but was not set" }, @@ -1571,30 +1608,32 @@ constructor( "ReportingConfiguration{exempt=$exempt, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ShippingAddress.Builder::class) @NoAutoDetect class ShippingAddress + @JsonCreator private constructor( - private val line1: String?, - private val line2: String?, - private val city: String?, - private val state: String?, - private val postalCode: String?, - private val country: String?, - private val additionalProperties: Map, + @JsonProperty("line1") private val line1: String?, + @JsonProperty("line2") private val line2: String?, + @JsonProperty("city") private val city: String?, + @JsonProperty("state") private val state: String?, + @JsonProperty("postal_code") private val postalCode: String?, + @JsonProperty("country") private val country: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("line1") fun line1(): String? = line1 + @JsonProperty("line1") fun line1(): Optional = Optional.ofNullable(line1) - @JsonProperty("line2") fun line2(): String? = line2 + @JsonProperty("line2") fun line2(): Optional = Optional.ofNullable(line2) - @JsonProperty("city") fun city(): String? = city + @JsonProperty("city") fun city(): Optional = Optional.ofNullable(city) - @JsonProperty("state") fun state(): String? = state + @JsonProperty("state") fun state(): Optional = Optional.ofNullable(state) - @JsonProperty("postal_code") fun postalCode(): String? = postalCode + @JsonProperty("postal_code") + fun postalCode(): Optional = Optional.ofNullable(postalCode) - @JsonProperty("country") fun country(): String? = country + @JsonProperty("country") fun country(): Optional = Optional.ofNullable(country) @JsonAnyGetter @ExcludeMissing @@ -1619,42 +1658,46 @@ constructor( @JvmSynthetic internal fun from(shippingAddress: ShippingAddress) = apply { - this.line1 = shippingAddress.line1 - this.line2 = shippingAddress.line2 - this.city = shippingAddress.city - this.state = shippingAddress.state - this.postalCode = shippingAddress.postalCode - this.country = shippingAddress.country - additionalProperties(shippingAddress.additionalProperties) + line1 = shippingAddress.line1 + line2 = shippingAddress.line2 + city = shippingAddress.city + state = shippingAddress.state + postalCode = shippingAddress.postalCode + country = shippingAddress.country + additionalProperties = shippingAddress.additionalProperties.toMutableMap() } - @JsonProperty("line1") fun line1(line1: String) = apply { this.line1 = line1 } + fun line1(line1: String) = apply { this.line1 = line1 } - @JsonProperty("line2") fun line2(line2: String) = apply { this.line2 = line2 } + fun line2(line2: String) = apply { this.line2 = line2 } - @JsonProperty("city") fun city(city: String) = apply { this.city = city } + fun city(city: String) = apply { this.city = city } - @JsonProperty("state") fun state(state: String) = apply { this.state = state } + fun state(state: String) = apply { this.state = state } - @JsonProperty("postal_code") fun postalCode(postalCode: String) = apply { this.postalCode = postalCode } - @JsonProperty("country") fun country(country: String) = apply { this.country = country } + fun country(country: String) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ShippingAddress = ShippingAddress( line1, @@ -1694,8 +1737,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newAvalaraTaxConfiguration(): Optional = Optional.ofNullable(newAvalaraTaxConfiguration) @@ -1724,17 +1765,6 @@ constructor( } } - fun validate(): TaxConfiguration = apply { - if (!validated) { - if (newAvalaraTaxConfiguration == null && newTaxJarConfiguration == null) { - throw OrbInvalidDataException("Unknown TaxConfiguration: $_json") - } - newAvalaraTaxConfiguration?.validate() - newTaxJarConfiguration?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -1789,23 +1819,14 @@ constructor( when (taxProvider) { "avalara" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return TaxConfiguration( - newAvalaraTaxConfiguration = it, - _json = json - ) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return TaxConfiguration(newAvalaraTaxConfiguration = it, _json = json) + } } "taxjar" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return TaxConfiguration(newTaxJarConfiguration = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return TaxConfiguration(newTaxJarConfiguration = it, _json = json) + } } } @@ -1831,46 +1852,28 @@ constructor( } } - @JsonDeserialize(builder = NewAvalaraTaxConfiguration.Builder::class) @NoAutoDetect class NewAvalaraTaxConfiguration + @JsonCreator private constructor( - private val taxExempt: JsonField, - private val taxProvider: JsonField, - private val taxExemptionCode: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_exempt") private val taxExempt: Boolean, + @JsonProperty("tax_provider") private val taxProvider: TaxProvider, + @JsonProperty("tax_exemption_code") private val taxExemptionCode: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun taxExempt(): Boolean = taxExempt.getRequired("tax_exempt") - - fun taxProvider(): TaxProvider = taxProvider.getRequired("tax_provider") - - fun taxExemptionCode(): Optional = - Optional.ofNullable(taxExemptionCode.getNullable("tax_exemption_code")) - - @JsonProperty("tax_exempt") @ExcludeMissing fun _taxExempt() = taxExempt + @JsonProperty("tax_exempt") fun taxExempt(): Boolean = taxExempt - @JsonProperty("tax_provider") @ExcludeMissing fun _taxProvider() = taxProvider + @JsonProperty("tax_provider") fun taxProvider(): TaxProvider = taxProvider @JsonProperty("tax_exemption_code") - @ExcludeMissing - fun _taxExemptionCode() = taxExemptionCode + fun taxExemptionCode(): Optional = Optional.ofNullable(taxExemptionCode) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewAvalaraTaxConfiguration = apply { - if (!validated) { - taxExempt() - taxProvider() - taxExemptionCode() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1880,50 +1883,35 @@ constructor( class Builder { - private var taxExempt: JsonField = JsonMissing.of() - private var taxProvider: JsonField = JsonMissing.of() - private var taxExemptionCode: JsonField = JsonMissing.of() + private var taxExempt: Boolean? = null + private var taxProvider: TaxProvider? = null + private var taxExemptionCode: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newAvalaraTaxConfiguration: NewAvalaraTaxConfiguration) = apply { - this.taxExempt = newAvalaraTaxConfiguration.taxExempt - this.taxProvider = newAvalaraTaxConfiguration.taxProvider - this.taxExemptionCode = newAvalaraTaxConfiguration.taxExemptionCode - additionalProperties(newAvalaraTaxConfiguration.additionalProperties) + taxExempt = newAvalaraTaxConfiguration.taxExempt + taxProvider = newAvalaraTaxConfiguration.taxProvider + taxExemptionCode = newAvalaraTaxConfiguration.taxExemptionCode + additionalProperties = + newAvalaraTaxConfiguration.additionalProperties.toMutableMap() } - fun taxExempt(taxExempt: Boolean) = taxExempt(JsonField.of(taxExempt)) - - @JsonProperty("tax_exempt") - @ExcludeMissing - fun taxExempt(taxExempt: JsonField) = apply { this.taxExempt = taxExempt } + fun taxExempt(taxExempt: Boolean) = apply { this.taxExempt = taxExempt } - fun taxProvider(taxProvider: TaxProvider) = taxProvider(JsonField.of(taxProvider)) + fun taxProvider(taxProvider: TaxProvider) = apply { this.taxProvider = taxProvider } - @JsonProperty("tax_provider") - @ExcludeMissing - fun taxProvider(taxProvider: JsonField) = apply { - this.taxProvider = taxProvider - } - - fun taxExemptionCode(taxExemptionCode: String) = - taxExemptionCode(JsonField.of(taxExemptionCode)) - - @JsonProperty("tax_exemption_code") - @ExcludeMissing - fun taxExemptionCode(taxExemptionCode: JsonField) = apply { + fun taxExemptionCode(taxExemptionCode: String) = apply { this.taxExemptionCode = taxExemptionCode } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1931,10 +1919,18 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewAvalaraTaxConfiguration = NewAvalaraTaxConfiguration( - taxExempt, - taxProvider, + checkNotNull(taxExempt) { "`taxExempt` is required but was not set" }, + checkNotNull(taxProvider) { "`taxProvider` is required but was not set" }, taxExemptionCode, additionalProperties.toImmutable(), ) @@ -2009,37 +2005,24 @@ constructor( "NewAvalaraTaxConfiguration{taxExempt=$taxExempt, taxProvider=$taxProvider, taxExemptionCode=$taxExemptionCode, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewTaxJarConfiguration.Builder::class) @NoAutoDetect class NewTaxJarConfiguration + @JsonCreator private constructor( - private val taxExempt: JsonField, - private val taxProvider: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_exempt") private val taxExempt: Boolean, + @JsonProperty("tax_provider") private val taxProvider: TaxProvider, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun taxExempt(): Boolean = taxExempt.getRequired("tax_exempt") - - fun taxProvider(): TaxProvider = taxProvider.getRequired("tax_provider") - - @JsonProperty("tax_exempt") @ExcludeMissing fun _taxExempt() = taxExempt + @JsonProperty("tax_exempt") fun taxExempt(): Boolean = taxExempt - @JsonProperty("tax_provider") @ExcludeMissing fun _taxProvider() = taxProvider + @JsonProperty("tax_provider") fun taxProvider(): TaxProvider = taxProvider @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewTaxJarConfiguration = apply { - if (!validated) { - taxExempt() - taxProvider() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2049,39 +2032,29 @@ constructor( class Builder { - private var taxExempt: JsonField = JsonMissing.of() - private var taxProvider: JsonField = JsonMissing.of() + private var taxExempt: Boolean? = null + private var taxProvider: TaxProvider? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newTaxJarConfiguration: NewTaxJarConfiguration) = apply { - this.taxExempt = newTaxJarConfiguration.taxExempt - this.taxProvider = newTaxJarConfiguration.taxProvider - additionalProperties(newTaxJarConfiguration.additionalProperties) + taxExempt = newTaxJarConfiguration.taxExempt + taxProvider = newTaxJarConfiguration.taxProvider + additionalProperties = + newTaxJarConfiguration.additionalProperties.toMutableMap() } - fun taxExempt(taxExempt: Boolean) = taxExempt(JsonField.of(taxExempt)) - - @JsonProperty("tax_exempt") - @ExcludeMissing - fun taxExempt(taxExempt: JsonField) = apply { this.taxExempt = taxExempt } - - fun taxProvider(taxProvider: TaxProvider) = taxProvider(JsonField.of(taxProvider)) + fun taxExempt(taxExempt: Boolean) = apply { this.taxExempt = taxExempt } - @JsonProperty("tax_provider") - @ExcludeMissing - fun taxProvider(taxProvider: JsonField) = apply { - this.taxProvider = taxProvider - } + fun taxProvider(taxProvider: TaxProvider) = apply { this.taxProvider = taxProvider } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2089,10 +2062,18 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewTaxJarConfiguration = NewTaxJarConfiguration( - taxExempt, - taxProvider, + checkNotNull(taxExempt) { "`taxExempt` is required but was not set" }, + checkNotNull(taxProvider) { "`taxProvider` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -2273,21 +2254,22 @@ constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonDeserialize(builder = TaxId.Builder::class) @NoAutoDetect class TaxId + @JsonCreator private constructor( - private val country: Country?, - private val type: Type?, - private val value: String?, - private val additionalProperties: Map, + @JsonProperty("country") private val country: Country, + @JsonProperty("type") private val type: Type, + @JsonProperty("value") private val value: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("country") fun country(): Country? = country + @JsonProperty("country") fun country(): Country = country - @JsonProperty("type") fun type(): Type? = type + @JsonProperty("type") fun type(): Type = type - @JsonProperty("value") fun value(): String? = value + @JsonProperty("value") fun value(): String = value @JsonAnyGetter @ExcludeMissing @@ -2309,33 +2291,37 @@ constructor( @JvmSynthetic internal fun from(taxId: TaxId) = apply { - this.country = taxId.country - this.type = taxId.type - this.value = taxId.value - additionalProperties(taxId.additionalProperties) + country = taxId.country + type = taxId.type + value = taxId.value + additionalProperties = taxId.additionalProperties.toMutableMap() } - @JsonProperty("country") fun country(country: Country) = apply { this.country = country } - @JsonProperty("type") fun type(type: Type) = apply { this.type = type } + fun type(type: Type) = apply { this.type = type } - @JsonProperty("value") fun value(value: String) = apply { this.value = value } + fun value(value: String) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TaxId = TaxId( checkNotNull(country) { "`country` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerUpdateParams.kt index 70533729..d23393c5 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/CustomerUpdateParams.kt @@ -18,12 +18,12 @@ import com.withorb.api.core.BaseSerializer import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField -import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -130,74 +130,82 @@ constructor( } } - @JsonDeserialize(builder = CustomerUpdateBody.Builder::class) @NoAutoDetect class CustomerUpdateBody + @JsonCreator internal constructor( + @JsonProperty("accounting_sync_configuration") private val accountingSyncConfiguration: AccountingSyncConfiguration?, - private val additionalEmails: List?, - private val autoCollection: Boolean?, - private val billingAddress: BillingAddress?, - private val currency: String?, - private val email: String?, - private val emailDelivery: Boolean?, - private val externalCustomerId: String?, - private val metadata: Metadata?, - private val name: String?, - private val paymentProvider: PaymentProvider?, - private val paymentProviderId: String?, + @JsonProperty("additional_emails") private val additionalEmails: List?, + @JsonProperty("auto_collection") private val autoCollection: Boolean?, + @JsonProperty("billing_address") private val billingAddress: BillingAddress?, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("email") private val email: String?, + @JsonProperty("email_delivery") private val emailDelivery: Boolean?, + @JsonProperty("external_customer_id") private val externalCustomerId: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("name") private val name: String?, + @JsonProperty("payment_provider") private val paymentProvider: PaymentProvider?, + @JsonProperty("payment_provider_id") private val paymentProviderId: String?, + @JsonProperty("reporting_configuration") private val reportingConfiguration: ReportingConfiguration?, - private val shippingAddress: ShippingAddress?, - private val taxConfiguration: TaxConfiguration?, - private val taxId: TaxId?, - private val additionalProperties: Map, + @JsonProperty("shipping_address") private val shippingAddress: ShippingAddress?, + @JsonProperty("tax_configuration") private val taxConfiguration: TaxConfiguration?, + @JsonProperty("tax_id") private val taxId: TaxId?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonProperty("accounting_sync_configuration") - fun accountingSyncConfiguration(): AccountingSyncConfiguration? = - accountingSyncConfiguration + fun accountingSyncConfiguration(): Optional = + Optional.ofNullable(accountingSyncConfiguration) /** * Additional email addresses for this customer. If populated, these email addresses will be * CC'd for customer communications. */ - @JsonProperty("additional_emails") fun additionalEmails(): List? = additionalEmails + @JsonProperty("additional_emails") + fun additionalEmails(): Optional> = Optional.ofNullable(additionalEmails) /** * Used to determine if invoices for this customer will automatically attempt to charge a * saved payment method, if available. This parameter defaults to `True` when a payment * provider is provided on customer creation. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") + fun autoCollection(): Optional = Optional.ofNullable(autoCollection) - @JsonProperty("billing_address") fun billingAddress(): BillingAddress? = billingAddress + @JsonProperty("billing_address") + fun billingAddress(): Optional = Optional.ofNullable(billingAddress) /** * An ISO 4217 currency string used for the customer's invoices and balance. If not set at * creation time, will be set at subscription creation time. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): Optional = Optional.ofNullable(currency) /** A valid customer email, to be used for invoicing and notifications. */ - @JsonProperty("email") fun email(): String? = email + @JsonProperty("email") fun email(): Optional = Optional.ofNullable(email) - @JsonProperty("email_delivery") fun emailDelivery(): Boolean? = emailDelivery + @JsonProperty("email_delivery") + fun emailDelivery(): Optional = Optional.ofNullable(emailDelivery) /** * The external customer ID. This can only be set if empty and the customer has no past or * current subscriptions. */ - @JsonProperty("external_customer_id") fun externalCustomerId(): String? = externalCustomerId + @JsonProperty("external_customer_id") + fun externalCustomerId(): Optional = Optional.ofNullable(externalCustomerId) /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** The full name of the customer */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): Optional = Optional.ofNullable(name) /** * This is used for creating charges or invoices in an external system via Orb. When not in @@ -206,21 +214,25 @@ constructor( * - if the provider is an invoicing provider (`stripe_invoice`, `quickbooks`, `bill.com`, * `netsuite`), any product mappings must first be configured with the Orb team. */ - @JsonProperty("payment_provider") fun paymentProvider(): PaymentProvider? = paymentProvider + @JsonProperty("payment_provider") + fun paymentProvider(): Optional = Optional.ofNullable(paymentProvider) /** * The ID of this customer in an external payments solution, such as Stripe. This is used * for creating charges or invoices in the external system via Orb. */ - @JsonProperty("payment_provider_id") fun paymentProviderId(): String? = paymentProviderId + @JsonProperty("payment_provider_id") + fun paymentProviderId(): Optional = Optional.ofNullable(paymentProviderId) @JsonProperty("reporting_configuration") - fun reportingConfiguration(): ReportingConfiguration? = reportingConfiguration + fun reportingConfiguration(): Optional = + Optional.ofNullable(reportingConfiguration) - @JsonProperty("shipping_address") fun shippingAddress(): ShippingAddress? = shippingAddress + @JsonProperty("shipping_address") + fun shippingAddress(): Optional = Optional.ofNullable(shippingAddress) @JsonProperty("tax_configuration") - fun taxConfiguration(): TaxConfiguration? = taxConfiguration + fun taxConfiguration(): Optional = Optional.ofNullable(taxConfiguration) /** * Tax IDs are commonly required to be displayed on customer invoices, which are added to @@ -328,7 +340,7 @@ constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonProperty("tax_id") fun taxId(): TaxId? = taxId + @JsonProperty("tax_id") fun taxId(): Optional = Optional.ofNullable(taxId) @JsonAnyGetter @ExcludeMissing @@ -363,26 +375,25 @@ constructor( @JvmSynthetic internal fun from(customerUpdateBody: CustomerUpdateBody) = apply { - this.accountingSyncConfiguration = customerUpdateBody.accountingSyncConfiguration - this.additionalEmails = customerUpdateBody.additionalEmails - this.autoCollection = customerUpdateBody.autoCollection - this.billingAddress = customerUpdateBody.billingAddress - this.currency = customerUpdateBody.currency - this.email = customerUpdateBody.email - this.emailDelivery = customerUpdateBody.emailDelivery - this.externalCustomerId = customerUpdateBody.externalCustomerId - this.metadata = customerUpdateBody.metadata - this.name = customerUpdateBody.name - this.paymentProvider = customerUpdateBody.paymentProvider - this.paymentProviderId = customerUpdateBody.paymentProviderId - this.reportingConfiguration = customerUpdateBody.reportingConfiguration - this.shippingAddress = customerUpdateBody.shippingAddress - this.taxConfiguration = customerUpdateBody.taxConfiguration - this.taxId = customerUpdateBody.taxId - additionalProperties(customerUpdateBody.additionalProperties) - } - - @JsonProperty("accounting_sync_configuration") + accountingSyncConfiguration = customerUpdateBody.accountingSyncConfiguration + additionalEmails = customerUpdateBody.additionalEmails?.toMutableList() + autoCollection = customerUpdateBody.autoCollection + billingAddress = customerUpdateBody.billingAddress + currency = customerUpdateBody.currency + email = customerUpdateBody.email + emailDelivery = customerUpdateBody.emailDelivery + externalCustomerId = customerUpdateBody.externalCustomerId + metadata = customerUpdateBody.metadata + name = customerUpdateBody.name + paymentProvider = customerUpdateBody.paymentProvider + paymentProviderId = customerUpdateBody.paymentProviderId + reportingConfiguration = customerUpdateBody.reportingConfiguration + shippingAddress = customerUpdateBody.shippingAddress + taxConfiguration = customerUpdateBody.taxConfiguration + taxId = customerUpdateBody.taxId + additionalProperties = customerUpdateBody.additionalProperties.toMutableMap() + } + fun accountingSyncConfiguration( accountingSyncConfiguration: AccountingSyncConfiguration ) = apply { this.accountingSyncConfiguration = accountingSyncConfiguration } @@ -391,7 +402,6 @@ constructor( * Additional email addresses for this customer. If populated, these email addresses * will be CC'd for customer communications. */ - @JsonProperty("additional_emails") fun additionalEmails(additionalEmails: List) = apply { this.additionalEmails = additionalEmails } @@ -401,12 +411,10 @@ constructor( * a saved payment method, if available. This parameter defaults to `True` when a * payment provider is provided on customer creation. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } - @JsonProperty("billing_address") fun billingAddress(billingAddress: BillingAddress) = apply { this.billingAddress = billingAddress } @@ -415,20 +423,17 @@ constructor( * An ISO 4217 currency string used for the customer's invoices and balance. If not set * at creation time, will be set at subscription creation time. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** A valid customer email, to be used for invoicing and notifications. */ - @JsonProperty("email") fun email(email: String) = apply { this.email = email } + fun email(email: String) = apply { this.email = email } - @JsonProperty("email_delivery") fun emailDelivery(emailDelivery: Boolean) = apply { this.emailDelivery = emailDelivery } /** * The external customer ID. This can only be set if empty and the customer has no past * or current subscriptions. */ - @JsonProperty("external_customer_id") fun externalCustomerId(externalCustomerId: String) = apply { this.externalCustomerId = externalCustomerId } @@ -438,11 +443,10 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** The full name of the customer */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * This is used for creating charges or invoices in an external system via Orb. When not @@ -452,7 +456,6 @@ constructor( * `bill.com`, `netsuite`), any product mappings must first be configured with the Orb * team. */ - @JsonProperty("payment_provider") fun paymentProvider(paymentProvider: PaymentProvider) = apply { this.paymentProvider = paymentProvider } @@ -461,22 +464,18 @@ constructor( * The ID of this customer in an external payments solution, such as Stripe. This is * used for creating charges or invoices in the external system via Orb. */ - @JsonProperty("payment_provider_id") fun paymentProviderId(paymentProviderId: String) = apply { this.paymentProviderId = paymentProviderId } - @JsonProperty("reporting_configuration") fun reportingConfiguration(reportingConfiguration: ReportingConfiguration) = apply { this.reportingConfiguration = reportingConfiguration } - @JsonProperty("shipping_address") fun shippingAddress(shippingAddress: ShippingAddress) = apply { this.shippingAddress = shippingAddress } - @JsonProperty("tax_configuration") fun taxConfiguration(taxConfiguration: TaxConfiguration) = apply { this.taxConfiguration = taxConfiguration } @@ -587,22 +586,27 @@ constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonProperty("tax_id") fun taxId(taxId: TaxId) = apply { this.taxId = taxId } + fun taxId(taxId: TaxId) = apply { this.taxId = taxId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerUpdateBody = CustomerUpdateBody( accountingSyncConfiguration, @@ -1060,19 +1064,22 @@ constructor( ) } - @JsonDeserialize(builder = AccountingSyncConfiguration.Builder::class) @NoAutoDetect class AccountingSyncConfiguration + @JsonCreator private constructor( - private val excluded: Boolean?, + @JsonProperty("excluded") private val excluded: Boolean?, + @JsonProperty("accounting_providers") private val accountingProviders: List?, - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("excluded") fun excluded(): Boolean? = excluded + @JsonProperty("excluded") fun excluded(): Optional = Optional.ofNullable(excluded) @JsonProperty("accounting_providers") - fun accountingProviders(): List? = accountingProviders + fun accountingProviders(): Optional> = + Optional.ofNullable(accountingProviders) @JsonAnyGetter @ExcludeMissing @@ -1093,33 +1100,38 @@ constructor( @JvmSynthetic internal fun from(accountingSyncConfiguration: AccountingSyncConfiguration) = apply { - this.excluded = accountingSyncConfiguration.excluded - this.accountingProviders = accountingSyncConfiguration.accountingProviders - additionalProperties(accountingSyncConfiguration.additionalProperties) + excluded = accountingSyncConfiguration.excluded + accountingProviders = + accountingSyncConfiguration.accountingProviders?.toMutableList() + additionalProperties = + accountingSyncConfiguration.additionalProperties.toMutableMap() } - @JsonProperty("excluded") fun excluded(excluded: Boolean) = apply { this.excluded = excluded } - @JsonProperty("accounting_providers") fun accountingProviders(accountingProviders: List) = apply { this.accountingProviders = accountingProviders } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AccountingSyncConfiguration = AccountingSyncConfiguration( excluded, @@ -1128,19 +1140,20 @@ constructor( ) } - @JsonDeserialize(builder = AccountingProvider.Builder::class) @NoAutoDetect class AccountingProvider + @JsonCreator private constructor( - private val providerType: String?, - private val externalProviderId: String?, - private val additionalProperties: Map, + @JsonProperty("provider_type") private val providerType: String, + @JsonProperty("external_provider_id") private val externalProviderId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("provider_type") fun providerType(): String? = providerType + @JsonProperty("provider_type") fun providerType(): String = providerType @JsonProperty("external_provider_id") - fun externalProviderId(): String? = externalProviderId + fun externalProviderId(): String = externalProviderId @JsonAnyGetter @ExcludeMissing @@ -1161,27 +1174,24 @@ constructor( @JvmSynthetic internal fun from(accountingProvider: AccountingProvider) = apply { - this.providerType = accountingProvider.providerType - this.externalProviderId = accountingProvider.externalProviderId - additionalProperties(accountingProvider.additionalProperties) + providerType = accountingProvider.providerType + externalProviderId = accountingProvider.externalProviderId + additionalProperties = accountingProvider.additionalProperties.toMutableMap() } - @JsonProperty("provider_type") fun providerType(providerType: String) = apply { this.providerType = providerType } - @JsonProperty("external_provider_id") fun externalProviderId(externalProviderId: String) = apply { this.externalProviderId = externalProviderId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1189,6 +1199,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AccountingProvider = AccountingProvider( checkNotNull(providerType) { "`providerType` is required but was not set" }, @@ -1235,30 +1253,32 @@ constructor( "AccountingSyncConfiguration{excluded=$excluded, accountingProviders=$accountingProviders, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingAddress.Builder::class) @NoAutoDetect class BillingAddress + @JsonCreator private constructor( - private val line1: String?, - private val line2: String?, - private val city: String?, - private val state: String?, - private val postalCode: String?, - private val country: String?, - private val additionalProperties: Map, + @JsonProperty("line1") private val line1: String?, + @JsonProperty("line2") private val line2: String?, + @JsonProperty("city") private val city: String?, + @JsonProperty("state") private val state: String?, + @JsonProperty("postal_code") private val postalCode: String?, + @JsonProperty("country") private val country: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("line1") fun line1(): String? = line1 + @JsonProperty("line1") fun line1(): Optional = Optional.ofNullable(line1) - @JsonProperty("line2") fun line2(): String? = line2 + @JsonProperty("line2") fun line2(): Optional = Optional.ofNullable(line2) - @JsonProperty("city") fun city(): String? = city + @JsonProperty("city") fun city(): Optional = Optional.ofNullable(city) - @JsonProperty("state") fun state(): String? = state + @JsonProperty("state") fun state(): Optional = Optional.ofNullable(state) - @JsonProperty("postal_code") fun postalCode(): String? = postalCode + @JsonProperty("postal_code") + fun postalCode(): Optional = Optional.ofNullable(postalCode) - @JsonProperty("country") fun country(): String? = country + @JsonProperty("country") fun country(): Optional = Optional.ofNullable(country) @JsonAnyGetter @ExcludeMissing @@ -1283,42 +1303,46 @@ constructor( @JvmSynthetic internal fun from(billingAddress: BillingAddress) = apply { - this.line1 = billingAddress.line1 - this.line2 = billingAddress.line2 - this.city = billingAddress.city - this.state = billingAddress.state - this.postalCode = billingAddress.postalCode - this.country = billingAddress.country - additionalProperties(billingAddress.additionalProperties) + line1 = billingAddress.line1 + line2 = billingAddress.line2 + city = billingAddress.city + state = billingAddress.state + postalCode = billingAddress.postalCode + country = billingAddress.country + additionalProperties = billingAddress.additionalProperties.toMutableMap() } - @JsonProperty("line1") fun line1(line1: String) = apply { this.line1 = line1 } + fun line1(line1: String) = apply { this.line1 = line1 } - @JsonProperty("line2") fun line2(line2: String) = apply { this.line2 = line2 } + fun line2(line2: String) = apply { this.line2 = line2 } - @JsonProperty("city") fun city(city: String) = apply { this.city = city } + fun city(city: String) = apply { this.city = city } - @JsonProperty("state") fun state(state: String) = apply { this.state = state } + fun state(state: String) = apply { this.state = state } - @JsonProperty("postal_code") fun postalCode(postalCode: String) = apply { this.postalCode = postalCode } - @JsonProperty("country") fun country(country: String) = apply { this.country = country } + fun country(country: String) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingAddress = BillingAddress( line1, @@ -1354,11 +1378,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -1378,23 +1403,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -1490,15 +1520,16 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ReportingConfiguration.Builder::class) @NoAutoDetect class ReportingConfiguration + @JsonCreator private constructor( - private val exempt: Boolean?, - private val additionalProperties: Map, + @JsonProperty("exempt") private val exempt: Boolean, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("exempt") fun exempt(): Boolean? = exempt + @JsonProperty("exempt") fun exempt(): Boolean = exempt @JsonAnyGetter @ExcludeMissing @@ -1518,26 +1549,31 @@ constructor( @JvmSynthetic internal fun from(reportingConfiguration: ReportingConfiguration) = apply { - this.exempt = reportingConfiguration.exempt - additionalProperties(reportingConfiguration.additionalProperties) + exempt = reportingConfiguration.exempt + additionalProperties = reportingConfiguration.additionalProperties.toMutableMap() } - @JsonProperty("exempt") fun exempt(exempt: Boolean) = apply { this.exempt = exempt } + fun exempt(exempt: Boolean) = apply { this.exempt = exempt } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ReportingConfiguration = ReportingConfiguration( checkNotNull(exempt) { "`exempt` is required but was not set" }, @@ -1563,30 +1599,32 @@ constructor( "ReportingConfiguration{exempt=$exempt, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ShippingAddress.Builder::class) @NoAutoDetect class ShippingAddress + @JsonCreator private constructor( - private val line1: String?, - private val line2: String?, - private val city: String?, - private val state: String?, - private val postalCode: String?, - private val country: String?, - private val additionalProperties: Map, + @JsonProperty("line1") private val line1: String?, + @JsonProperty("line2") private val line2: String?, + @JsonProperty("city") private val city: String?, + @JsonProperty("state") private val state: String?, + @JsonProperty("postal_code") private val postalCode: String?, + @JsonProperty("country") private val country: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("line1") fun line1(): String? = line1 + @JsonProperty("line1") fun line1(): Optional = Optional.ofNullable(line1) - @JsonProperty("line2") fun line2(): String? = line2 + @JsonProperty("line2") fun line2(): Optional = Optional.ofNullable(line2) - @JsonProperty("city") fun city(): String? = city + @JsonProperty("city") fun city(): Optional = Optional.ofNullable(city) - @JsonProperty("state") fun state(): String? = state + @JsonProperty("state") fun state(): Optional = Optional.ofNullable(state) - @JsonProperty("postal_code") fun postalCode(): String? = postalCode + @JsonProperty("postal_code") + fun postalCode(): Optional = Optional.ofNullable(postalCode) - @JsonProperty("country") fun country(): String? = country + @JsonProperty("country") fun country(): Optional = Optional.ofNullable(country) @JsonAnyGetter @ExcludeMissing @@ -1611,42 +1649,46 @@ constructor( @JvmSynthetic internal fun from(shippingAddress: ShippingAddress) = apply { - this.line1 = shippingAddress.line1 - this.line2 = shippingAddress.line2 - this.city = shippingAddress.city - this.state = shippingAddress.state - this.postalCode = shippingAddress.postalCode - this.country = shippingAddress.country - additionalProperties(shippingAddress.additionalProperties) + line1 = shippingAddress.line1 + line2 = shippingAddress.line2 + city = shippingAddress.city + state = shippingAddress.state + postalCode = shippingAddress.postalCode + country = shippingAddress.country + additionalProperties = shippingAddress.additionalProperties.toMutableMap() } - @JsonProperty("line1") fun line1(line1: String) = apply { this.line1 = line1 } + fun line1(line1: String) = apply { this.line1 = line1 } - @JsonProperty("line2") fun line2(line2: String) = apply { this.line2 = line2 } + fun line2(line2: String) = apply { this.line2 = line2 } - @JsonProperty("city") fun city(city: String) = apply { this.city = city } + fun city(city: String) = apply { this.city = city } - @JsonProperty("state") fun state(state: String) = apply { this.state = state } + fun state(state: String) = apply { this.state = state } - @JsonProperty("postal_code") fun postalCode(postalCode: String) = apply { this.postalCode = postalCode } - @JsonProperty("country") fun country(country: String) = apply { this.country = country } + fun country(country: String) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ShippingAddress = ShippingAddress( line1, @@ -1686,8 +1728,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newAvalaraTaxConfiguration(): Optional = Optional.ofNullable(newAvalaraTaxConfiguration) @@ -1716,17 +1756,6 @@ constructor( } } - fun validate(): TaxConfiguration = apply { - if (!validated) { - if (newAvalaraTaxConfiguration == null && newTaxJarConfiguration == null) { - throw OrbInvalidDataException("Unknown TaxConfiguration: $_json") - } - newAvalaraTaxConfiguration?.validate() - newTaxJarConfiguration?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -1781,23 +1810,14 @@ constructor( when (taxProvider) { "avalara" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return TaxConfiguration( - newAvalaraTaxConfiguration = it, - _json = json - ) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return TaxConfiguration(newAvalaraTaxConfiguration = it, _json = json) + } } "taxjar" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return TaxConfiguration(newTaxJarConfiguration = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return TaxConfiguration(newTaxJarConfiguration = it, _json = json) + } } } @@ -1823,46 +1843,28 @@ constructor( } } - @JsonDeserialize(builder = NewAvalaraTaxConfiguration.Builder::class) @NoAutoDetect class NewAvalaraTaxConfiguration + @JsonCreator private constructor( - private val taxExempt: JsonField, - private val taxProvider: JsonField, - private val taxExemptionCode: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_exempt") private val taxExempt: Boolean, + @JsonProperty("tax_provider") private val taxProvider: TaxProvider, + @JsonProperty("tax_exemption_code") private val taxExemptionCode: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun taxExempt(): Boolean = taxExempt.getRequired("tax_exempt") - - fun taxProvider(): TaxProvider = taxProvider.getRequired("tax_provider") - - fun taxExemptionCode(): Optional = - Optional.ofNullable(taxExemptionCode.getNullable("tax_exemption_code")) - - @JsonProperty("tax_exempt") @ExcludeMissing fun _taxExempt() = taxExempt + @JsonProperty("tax_exempt") fun taxExempt(): Boolean = taxExempt - @JsonProperty("tax_provider") @ExcludeMissing fun _taxProvider() = taxProvider + @JsonProperty("tax_provider") fun taxProvider(): TaxProvider = taxProvider @JsonProperty("tax_exemption_code") - @ExcludeMissing - fun _taxExemptionCode() = taxExemptionCode + fun taxExemptionCode(): Optional = Optional.ofNullable(taxExemptionCode) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewAvalaraTaxConfiguration = apply { - if (!validated) { - taxExempt() - taxProvider() - taxExemptionCode() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1872,50 +1874,35 @@ constructor( class Builder { - private var taxExempt: JsonField = JsonMissing.of() - private var taxProvider: JsonField = JsonMissing.of() - private var taxExemptionCode: JsonField = JsonMissing.of() + private var taxExempt: Boolean? = null + private var taxProvider: TaxProvider? = null + private var taxExemptionCode: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newAvalaraTaxConfiguration: NewAvalaraTaxConfiguration) = apply { - this.taxExempt = newAvalaraTaxConfiguration.taxExempt - this.taxProvider = newAvalaraTaxConfiguration.taxProvider - this.taxExemptionCode = newAvalaraTaxConfiguration.taxExemptionCode - additionalProperties(newAvalaraTaxConfiguration.additionalProperties) + taxExempt = newAvalaraTaxConfiguration.taxExempt + taxProvider = newAvalaraTaxConfiguration.taxProvider + taxExemptionCode = newAvalaraTaxConfiguration.taxExemptionCode + additionalProperties = + newAvalaraTaxConfiguration.additionalProperties.toMutableMap() } - fun taxExempt(taxExempt: Boolean) = taxExempt(JsonField.of(taxExempt)) - - @JsonProperty("tax_exempt") - @ExcludeMissing - fun taxExempt(taxExempt: JsonField) = apply { this.taxExempt = taxExempt } + fun taxExempt(taxExempt: Boolean) = apply { this.taxExempt = taxExempt } - fun taxProvider(taxProvider: TaxProvider) = taxProvider(JsonField.of(taxProvider)) + fun taxProvider(taxProvider: TaxProvider) = apply { this.taxProvider = taxProvider } - @JsonProperty("tax_provider") - @ExcludeMissing - fun taxProvider(taxProvider: JsonField) = apply { - this.taxProvider = taxProvider - } - - fun taxExemptionCode(taxExemptionCode: String) = - taxExemptionCode(JsonField.of(taxExemptionCode)) - - @JsonProperty("tax_exemption_code") - @ExcludeMissing - fun taxExemptionCode(taxExemptionCode: JsonField) = apply { + fun taxExemptionCode(taxExemptionCode: String) = apply { this.taxExemptionCode = taxExemptionCode } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1923,10 +1910,18 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewAvalaraTaxConfiguration = NewAvalaraTaxConfiguration( - taxExempt, - taxProvider, + checkNotNull(taxExempt) { "`taxExempt` is required but was not set" }, + checkNotNull(taxProvider) { "`taxProvider` is required but was not set" }, taxExemptionCode, additionalProperties.toImmutable(), ) @@ -2001,37 +1996,24 @@ constructor( "NewAvalaraTaxConfiguration{taxExempt=$taxExempt, taxProvider=$taxProvider, taxExemptionCode=$taxExemptionCode, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewTaxJarConfiguration.Builder::class) @NoAutoDetect class NewTaxJarConfiguration + @JsonCreator private constructor( - private val taxExempt: JsonField, - private val taxProvider: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_exempt") private val taxExempt: Boolean, + @JsonProperty("tax_provider") private val taxProvider: TaxProvider, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun taxExempt(): Boolean = taxExempt.getRequired("tax_exempt") - - fun taxProvider(): TaxProvider = taxProvider.getRequired("tax_provider") - - @JsonProperty("tax_exempt") @ExcludeMissing fun _taxExempt() = taxExempt + @JsonProperty("tax_exempt") fun taxExempt(): Boolean = taxExempt - @JsonProperty("tax_provider") @ExcludeMissing fun _taxProvider() = taxProvider + @JsonProperty("tax_provider") fun taxProvider(): TaxProvider = taxProvider @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewTaxJarConfiguration = apply { - if (!validated) { - taxExempt() - taxProvider() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2041,39 +2023,29 @@ constructor( class Builder { - private var taxExempt: JsonField = JsonMissing.of() - private var taxProvider: JsonField = JsonMissing.of() + private var taxExempt: Boolean? = null + private var taxProvider: TaxProvider? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newTaxJarConfiguration: NewTaxJarConfiguration) = apply { - this.taxExempt = newTaxJarConfiguration.taxExempt - this.taxProvider = newTaxJarConfiguration.taxProvider - additionalProperties(newTaxJarConfiguration.additionalProperties) + taxExempt = newTaxJarConfiguration.taxExempt + taxProvider = newTaxJarConfiguration.taxProvider + additionalProperties = + newTaxJarConfiguration.additionalProperties.toMutableMap() } - fun taxExempt(taxExempt: Boolean) = taxExempt(JsonField.of(taxExempt)) - - @JsonProperty("tax_exempt") - @ExcludeMissing - fun taxExempt(taxExempt: JsonField) = apply { this.taxExempt = taxExempt } - - fun taxProvider(taxProvider: TaxProvider) = taxProvider(JsonField.of(taxProvider)) + fun taxExempt(taxExempt: Boolean) = apply { this.taxExempt = taxExempt } - @JsonProperty("tax_provider") - @ExcludeMissing - fun taxProvider(taxProvider: JsonField) = apply { - this.taxProvider = taxProvider - } + fun taxProvider(taxProvider: TaxProvider) = apply { this.taxProvider = taxProvider } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2081,10 +2053,18 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewTaxJarConfiguration = NewTaxJarConfiguration( - taxExempt, - taxProvider, + checkNotNull(taxExempt) { "`taxExempt` is required but was not set" }, + checkNotNull(taxProvider) { "`taxProvider` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -2265,21 +2245,22 @@ constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonDeserialize(builder = TaxId.Builder::class) @NoAutoDetect class TaxId + @JsonCreator private constructor( - private val country: Country?, - private val type: Type?, - private val value: String?, - private val additionalProperties: Map, + @JsonProperty("country") private val country: Country, + @JsonProperty("type") private val type: Type, + @JsonProperty("value") private val value: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("country") fun country(): Country? = country + @JsonProperty("country") fun country(): Country = country - @JsonProperty("type") fun type(): Type? = type + @JsonProperty("type") fun type(): Type = type - @JsonProperty("value") fun value(): String? = value + @JsonProperty("value") fun value(): String = value @JsonAnyGetter @ExcludeMissing @@ -2301,33 +2282,37 @@ constructor( @JvmSynthetic internal fun from(taxId: TaxId) = apply { - this.country = taxId.country - this.type = taxId.type - this.value = taxId.value - additionalProperties(taxId.additionalProperties) + country = taxId.country + type = taxId.type + value = taxId.value + additionalProperties = taxId.additionalProperties.toMutableMap() } - @JsonProperty("country") fun country(country: Country) = apply { this.country = country } - @JsonProperty("type") fun type(type: Type) = apply { this.type = type } + fun type(type: Type) = apply { this.type = type } - @JsonProperty("value") fun value(value: String) = apply { this.value = value } + fun value(value: String) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TaxId = TaxId( checkNotNull(country) { "`country` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroup.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroup.kt new file mode 100644 index 00000000..aeefba84 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroup.kt @@ -0,0 +1,325 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.fasterxml.jackson.annotation.JsonAnyGetter +import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.annotation.JsonProperty +import com.withorb.api.core.ExcludeMissing +import com.withorb.api.core.JsonField +import com.withorb.api.core.JsonMissing +import com.withorb.api.core.JsonValue +import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap +import com.withorb.api.core.toImmutable +import java.util.Objects +import java.util.Optional + +/** + * A dimensional price group is used to partition the result of a billable metric by a set of + * dimensions. Prices in a price group must specify the parition used to derive their usage. + */ +@NoAutoDetect +class DimensionalPriceGroup +@JsonCreator +private constructor( + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") @ExcludeMissing private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_dimensional_price_group_id") + @ExcludeMissing + private val externalDimensionalPriceGroupId: JsonField = JsonMissing.of(), + @JsonProperty("dimensions") + @ExcludeMissing + private val dimensions: JsonField> = JsonMissing.of(), + @JsonProperty("billable_metric_id") + @ExcludeMissing + private val billableMetricId: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), +) { + + /** + * User specified key-value pairs for the resource. If not present, this defaults to an empty + * dictionary. Individual keys can be removed by setting the value to `null`, and the entire + * metadata mapping can be cleared by setting `metadata` to `null`. + */ + fun metadata(): Metadata = metadata.getRequired("metadata") + + fun id(): String = id.getRequired("id") + + /** The name of the dimensional price group */ + fun name(): String = name.getRequired("name") + + /** An alias for the dimensional price group */ + fun externalDimensionalPriceGroupId(): Optional = + Optional.ofNullable( + externalDimensionalPriceGroupId.getNullable("external_dimensional_price_group_id") + ) + + /** The dimensions that this dimensional price group is defined over */ + fun dimensions(): List = dimensions.getRequired("dimensions") + + /** + * The billable metric associated with this dimensional price group. All prices associated with + * this dimensional price group will be computed using this billable metric. + */ + fun billableMetricId(): String = billableMetricId.getRequired("billable_metric_id") + + /** + * User specified key-value pairs for the resource. If not present, this defaults to an empty + * dictionary. Individual keys can be removed by setting the value to `null`, and the entire + * metadata mapping can be cleared by setting `metadata` to `null`. + */ + @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + + @JsonProperty("id") @ExcludeMissing fun _id() = id + + /** The name of the dimensional price group */ + @JsonProperty("name") @ExcludeMissing fun _name() = name + + /** An alias for the dimensional price group */ + @JsonProperty("external_dimensional_price_group_id") + @ExcludeMissing + fun _externalDimensionalPriceGroupId() = externalDimensionalPriceGroupId + + /** The dimensions that this dimensional price group is defined over */ + @JsonProperty("dimensions") @ExcludeMissing fun _dimensions() = dimensions + + /** + * The billable metric associated with this dimensional price group. All prices associated with + * this dimensional price group will be computed using this billable metric. + */ + @JsonProperty("billable_metric_id") @ExcludeMissing fun _billableMetricId() = billableMetricId + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = additionalProperties + + private var validated: Boolean = false + + fun validate(): DimensionalPriceGroup = apply { + if (!validated) { + metadata().validate() + id() + name() + externalDimensionalPriceGroupId() + dimensions() + billableMetricId() + validated = true + } + } + + fun toBuilder() = Builder().from(this) + + companion object { + + @JvmStatic fun builder() = Builder() + } + + class Builder { + + private var metadata: JsonField = JsonMissing.of() + private var id: JsonField = JsonMissing.of() + private var name: JsonField = JsonMissing.of() + private var externalDimensionalPriceGroupId: JsonField = JsonMissing.of() + private var dimensions: JsonField> = JsonMissing.of() + private var billableMetricId: JsonField = JsonMissing.of() + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(dimensionalPriceGroup: DimensionalPriceGroup) = apply { + metadata = dimensionalPriceGroup.metadata + id = dimensionalPriceGroup.id + name = dimensionalPriceGroup.name + externalDimensionalPriceGroupId = dimensionalPriceGroup.externalDimensionalPriceGroupId + dimensions = dimensionalPriceGroup.dimensions + billableMetricId = dimensionalPriceGroup.billableMetricId + additionalProperties = dimensionalPriceGroup.additionalProperties.toMutableMap() + } + + /** + * User specified key-value pairs for the resource. If not present, this defaults to an + * empty dictionary. Individual keys can be removed by setting the value to `null`, and the + * entire metadata mapping can be cleared by setting `metadata` to `null`. + */ + fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) + + /** + * User specified key-value pairs for the resource. If not present, this defaults to an + * empty dictionary. Individual keys can be removed by setting the value to `null`, and the + * entire metadata mapping can be cleared by setting `metadata` to `null`. + */ + fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + + fun id(id: String) = id(JsonField.of(id)) + + fun id(id: JsonField) = apply { this.id = id } + + /** The name of the dimensional price group */ + fun name(name: String) = name(JsonField.of(name)) + + /** The name of the dimensional price group */ + fun name(name: JsonField) = apply { this.name = name } + + /** An alias for the dimensional price group */ + fun externalDimensionalPriceGroupId(externalDimensionalPriceGroupId: String) = + externalDimensionalPriceGroupId(JsonField.of(externalDimensionalPriceGroupId)) + + /** An alias for the dimensional price group */ + fun externalDimensionalPriceGroupId(externalDimensionalPriceGroupId: JsonField) = + apply { + this.externalDimensionalPriceGroupId = externalDimensionalPriceGroupId + } + + /** The dimensions that this dimensional price group is defined over */ + fun dimensions(dimensions: List) = dimensions(JsonField.of(dimensions)) + + /** The dimensions that this dimensional price group is defined over */ + fun dimensions(dimensions: JsonField>) = apply { this.dimensions = dimensions } + + /** + * The billable metric associated with this dimensional price group. All prices associated + * with this dimensional price group will be computed using this billable metric. + */ + fun billableMetricId(billableMetricId: String) = + billableMetricId(JsonField.of(billableMetricId)) + + /** + * The billable metric associated with this dimensional price group. All prices associated + * with this dimensional price group will be computed using this billable metric. + */ + fun billableMetricId(billableMetricId: JsonField) = apply { + this.billableMetricId = billableMetricId + } + + fun additionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.clear() + putAllAdditionalProperties(additionalProperties) + } + + fun putAdditionalProperty(key: String, value: JsonValue) = apply { + additionalProperties.put(key, value) + } + + fun putAllAdditionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.putAll(additionalProperties) + } + + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + fun build(): DimensionalPriceGroup = + DimensionalPriceGroup( + metadata, + id, + name, + externalDimensionalPriceGroupId, + dimensions.map { it.toImmutable() }, + billableMetricId, + additionalProperties.toImmutable(), + ) + } + + /** + * User specified key-value pairs for the resource. If not present, this defaults to an empty + * dictionary. Individual keys can be removed by setting the value to `null`, and the entire + * metadata mapping can be cleared by setting `metadata` to `null`. + */ + @NoAutoDetect + class Metadata + @JsonCreator + private constructor( + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), + ) { + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = additionalProperties + + private var validated: Boolean = false + + fun validate(): Metadata = apply { + if (!validated) { + validated = true + } + } + + fun toBuilder() = Builder().from(this) + + companion object { + + @JvmStatic fun builder() = Builder() + } + + class Builder { + + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(metadata: Metadata) = apply { + additionalProperties = metadata.additionalProperties.toMutableMap() + } + + fun additionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.clear() + putAllAdditionalProperties(additionalProperties) + } + + fun putAdditionalProperty(key: String, value: JsonValue) = apply { + additionalProperties.put(key, value) + } + + fun putAllAdditionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.putAll(additionalProperties) + } + + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is Metadata && additionalProperties == other.additionalProperties /* spotless:on */ + } + + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(additionalProperties) } + /* spotless:on */ + + override fun hashCode(): Int = hashCode + + override fun toString() = "Metadata{additionalProperties=$additionalProperties}" + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is DimensionalPriceGroup && metadata == other.metadata && id == other.id && name == other.name && externalDimensionalPriceGroupId == other.externalDimensionalPriceGroupId && dimensions == other.dimensions && billableMetricId == other.billableMetricId && additionalProperties == other.additionalProperties /* spotless:on */ + } + + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(metadata, id, name, externalDimensionalPriceGroupId, dimensions, billableMetricId, additionalProperties) } + /* spotless:on */ + + override fun hashCode(): Int = hashCode + + override fun toString() = + "DimensionalPriceGroup{metadata=$metadata, id=$id, name=$name, externalDimensionalPriceGroupId=$externalDimensionalPriceGroupId, dimensions=$dimensions, billableMetricId=$billableMetricId, additionalProperties=$additionalProperties}" +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupCreateParams.kt new file mode 100644 index 00000000..82f66d03 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupCreateParams.kt @@ -0,0 +1,478 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.fasterxml.jackson.annotation.JsonAnyGetter +import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.annotation.JsonProperty +import com.withorb.api.core.ExcludeMissing +import com.withorb.api.core.JsonValue +import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.http.Headers +import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap +import com.withorb.api.core.toImmutable +import java.util.Objects +import java.util.Optional + +class DimensionalPriceGroupCreateParams +constructor( + private val billableMetricId: String, + private val dimensions: List, + private val name: String, + private val externalDimensionalPriceGroupId: String?, + private val metadata: Metadata?, + private val additionalHeaders: Headers, + private val additionalQueryParams: QueryParams, + private val additionalBodyProperties: Map, +) { + + fun billableMetricId(): String = billableMetricId + + fun dimensions(): List = dimensions + + fun name(): String = name + + fun externalDimensionalPriceGroupId(): Optional = + Optional.ofNullable(externalDimensionalPriceGroupId) + + fun metadata(): Optional = Optional.ofNullable(metadata) + + fun _additionalHeaders(): Headers = additionalHeaders + + fun _additionalQueryParams(): QueryParams = additionalQueryParams + + fun _additionalBodyProperties(): Map = additionalBodyProperties + + @JvmSynthetic + internal fun getBody(): DimensionalPriceGroupCreateBody { + return DimensionalPriceGroupCreateBody( + billableMetricId, + dimensions, + name, + externalDimensionalPriceGroupId, + metadata, + additionalBodyProperties, + ) + } + + @JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders + + @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams + + @NoAutoDetect + class DimensionalPriceGroupCreateBody + @JsonCreator + internal constructor( + @JsonProperty("billable_metric_id") private val billableMetricId: String, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("name") private val name: String, + @JsonProperty("external_dimensional_price_group_id") + private val externalDimensionalPriceGroupId: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), + ) { + + @JsonProperty("billable_metric_id") fun billableMetricId(): String = billableMetricId + + /** The set of keys (in order) used to disambiguate prices in the group. */ + @JsonProperty("dimensions") fun dimensions(): List = dimensions + + @JsonProperty("name") fun name(): String = name + + @JsonProperty("external_dimensional_price_group_id") + fun externalDimensionalPriceGroupId(): Optional = + Optional.ofNullable(externalDimensionalPriceGroupId) + + /** + * User-specified key/value pairs for the resource. Individual keys can be removed by + * setting the value to `null`, and the entire metadata mapping can be cleared by setting + * `metadata` to `null`. + */ + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = additionalProperties + + fun toBuilder() = Builder().from(this) + + companion object { + + @JvmStatic fun builder() = Builder() + } + + class Builder { + + private var billableMetricId: String? = null + private var dimensions: List? = null + private var name: String? = null + private var externalDimensionalPriceGroupId: String? = null + private var metadata: Metadata? = null + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(dimensionalPriceGroupCreateBody: DimensionalPriceGroupCreateBody) = + apply { + billableMetricId = dimensionalPriceGroupCreateBody.billableMetricId + dimensions = dimensionalPriceGroupCreateBody.dimensions.toMutableList() + name = dimensionalPriceGroupCreateBody.name + externalDimensionalPriceGroupId = + dimensionalPriceGroupCreateBody.externalDimensionalPriceGroupId + metadata = dimensionalPriceGroupCreateBody.metadata + additionalProperties = + dimensionalPriceGroupCreateBody.additionalProperties.toMutableMap() + } + + fun billableMetricId(billableMetricId: String) = apply { + this.billableMetricId = billableMetricId + } + + /** The set of keys (in order) used to disambiguate prices in the group. */ + fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } + + fun name(name: String) = apply { this.name = name } + + fun externalDimensionalPriceGroupId(externalDimensionalPriceGroupId: String) = apply { + this.externalDimensionalPriceGroupId = externalDimensionalPriceGroupId + } + + /** + * User-specified key/value pairs for the resource. Individual keys can be removed by + * setting the value to `null`, and the entire metadata mapping can be cleared by + * setting `metadata` to `null`. + */ + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } + + fun additionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.clear() + putAllAdditionalProperties(additionalProperties) + } + + fun putAdditionalProperty(key: String, value: JsonValue) = apply { + additionalProperties.put(key, value) + } + + fun putAllAdditionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.putAll(additionalProperties) + } + + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + fun build(): DimensionalPriceGroupCreateBody = + DimensionalPriceGroupCreateBody( + checkNotNull(billableMetricId) { + "`billableMetricId` is required but was not set" + }, + checkNotNull(dimensions) { "`dimensions` is required but was not set" } + .toImmutable(), + checkNotNull(name) { "`name` is required but was not set" }, + externalDimensionalPriceGroupId, + metadata, + additionalProperties.toImmutable(), + ) + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is DimensionalPriceGroupCreateBody && billableMetricId == other.billableMetricId && dimensions == other.dimensions && name == other.name && externalDimensionalPriceGroupId == other.externalDimensionalPriceGroupId && metadata == other.metadata && additionalProperties == other.additionalProperties /* spotless:on */ + } + + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(billableMetricId, dimensions, name, externalDimensionalPriceGroupId, metadata, additionalProperties) } + /* spotless:on */ + + override fun hashCode(): Int = hashCode + + override fun toString() = + "DimensionalPriceGroupCreateBody{billableMetricId=$billableMetricId, dimensions=$dimensions, name=$name, externalDimensionalPriceGroupId=$externalDimensionalPriceGroupId, metadata=$metadata, additionalProperties=$additionalProperties}" + } + + fun toBuilder() = Builder().from(this) + + companion object { + + @JvmStatic fun builder() = Builder() + } + + @NoAutoDetect + class Builder { + + private var billableMetricId: String? = null + private var dimensions: MutableList = mutableListOf() + private var name: String? = null + private var externalDimensionalPriceGroupId: String? = null + private var metadata: Metadata? = null + private var additionalHeaders: Headers.Builder = Headers.builder() + private var additionalQueryParams: QueryParams.Builder = QueryParams.builder() + private var additionalBodyProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(dimensionalPriceGroupCreateParams: DimensionalPriceGroupCreateParams) = + apply { + billableMetricId = dimensionalPriceGroupCreateParams.billableMetricId + dimensions = dimensionalPriceGroupCreateParams.dimensions.toMutableList() + name = dimensionalPriceGroupCreateParams.name + externalDimensionalPriceGroupId = + dimensionalPriceGroupCreateParams.externalDimensionalPriceGroupId + metadata = dimensionalPriceGroupCreateParams.metadata + additionalHeaders = dimensionalPriceGroupCreateParams.additionalHeaders.toBuilder() + additionalQueryParams = + dimensionalPriceGroupCreateParams.additionalQueryParams.toBuilder() + additionalBodyProperties = + dimensionalPriceGroupCreateParams.additionalBodyProperties.toMutableMap() + } + + fun billableMetricId(billableMetricId: String) = apply { + this.billableMetricId = billableMetricId + } + + /** The set of keys (in order) used to disambiguate prices in the group. */ + fun dimensions(dimensions: List) = apply { + this.dimensions.clear() + this.dimensions.addAll(dimensions) + } + + /** The set of keys (in order) used to disambiguate prices in the group. */ + fun addDimension(dimension: String) = apply { this.dimensions.add(dimension) } + + fun name(name: String) = apply { this.name = name } + + fun externalDimensionalPriceGroupId(externalDimensionalPriceGroupId: String) = apply { + this.externalDimensionalPriceGroupId = externalDimensionalPriceGroupId + } + + /** + * User-specified key/value pairs for the resource. Individual keys can be removed by + * setting the value to `null`, and the entire metadata mapping can be cleared by setting + * `metadata` to `null`. + */ + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } + + fun additionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.clear() + putAllAdditionalHeaders(additionalHeaders) + } + + fun additionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.clear() + putAllAdditionalHeaders(additionalHeaders) + } + + fun putAdditionalHeader(name: String, value: String) = apply { + additionalHeaders.put(name, value) + } + + fun putAdditionalHeaders(name: String, values: Iterable) = apply { + additionalHeaders.put(name, values) + } + + fun putAllAdditionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.putAll(additionalHeaders) + } + + fun putAllAdditionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.putAll(additionalHeaders) + } + + fun replaceAdditionalHeaders(name: String, value: String) = apply { + additionalHeaders.replace(name, value) + } + + fun replaceAdditionalHeaders(name: String, values: Iterable) = apply { + additionalHeaders.replace(name, values) + } + + fun replaceAllAdditionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.replaceAll(additionalHeaders) + } + + fun replaceAllAdditionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.replaceAll(additionalHeaders) + } + + fun removeAdditionalHeaders(name: String) = apply { additionalHeaders.remove(name) } + + fun removeAllAdditionalHeaders(names: Set) = apply { + additionalHeaders.removeAll(names) + } + + fun additionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.clear() + putAllAdditionalQueryParams(additionalQueryParams) + } + + fun additionalQueryParams(additionalQueryParams: Map>) = apply { + this.additionalQueryParams.clear() + putAllAdditionalQueryParams(additionalQueryParams) + } + + fun putAdditionalQueryParam(key: String, value: String) = apply { + additionalQueryParams.put(key, value) + } + + fun putAdditionalQueryParams(key: String, values: Iterable) = apply { + additionalQueryParams.put(key, values) + } + + fun putAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.putAll(additionalQueryParams) + } + + fun putAllAdditionalQueryParams(additionalQueryParams: Map>) = + apply { + this.additionalQueryParams.putAll(additionalQueryParams) + } + + fun replaceAdditionalQueryParams(key: String, value: String) = apply { + additionalQueryParams.replace(key, value) + } + + fun replaceAdditionalQueryParams(key: String, values: Iterable) = apply { + additionalQueryParams.replace(key, values) + } + + fun replaceAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.replaceAll(additionalQueryParams) + } + + fun replaceAllAdditionalQueryParams(additionalQueryParams: Map>) = + apply { + this.additionalQueryParams.replaceAll(additionalQueryParams) + } + + fun removeAdditionalQueryParams(key: String) = apply { additionalQueryParams.remove(key) } + + fun removeAllAdditionalQueryParams(keys: Set) = apply { + additionalQueryParams.removeAll(keys) + } + + fun additionalBodyProperties(additionalBodyProperties: Map) = apply { + this.additionalBodyProperties.clear() + putAllAdditionalBodyProperties(additionalBodyProperties) + } + + fun putAdditionalBodyProperty(key: String, value: JsonValue) = apply { + additionalBodyProperties.put(key, value) + } + + fun putAllAdditionalBodyProperties(additionalBodyProperties: Map) = + apply { + this.additionalBodyProperties.putAll(additionalBodyProperties) + } + + fun removeAdditionalBodyProperty(key: String) = apply { + additionalBodyProperties.remove(key) + } + + fun removeAllAdditionalBodyProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalBodyProperty) + } + + fun build(): DimensionalPriceGroupCreateParams = + DimensionalPriceGroupCreateParams( + checkNotNull(billableMetricId) { "`billableMetricId` is required but was not set" }, + dimensions.toImmutable(), + checkNotNull(name) { "`name` is required but was not set" }, + externalDimensionalPriceGroupId, + metadata, + additionalHeaders.build(), + additionalQueryParams.build(), + additionalBodyProperties.toImmutable(), + ) + } + + /** + * User-specified key/value pairs for the resource. Individual keys can be removed by setting + * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to + * `null`. + */ + @NoAutoDetect + class Metadata + @JsonCreator + private constructor( + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), + ) { + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = additionalProperties + + fun toBuilder() = Builder().from(this) + + companion object { + + @JvmStatic fun builder() = Builder() + } + + class Builder { + + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(metadata: Metadata) = apply { + additionalProperties = metadata.additionalProperties.toMutableMap() + } + + fun additionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.clear() + putAllAdditionalProperties(additionalProperties) + } + + fun putAdditionalProperty(key: String, value: JsonValue) = apply { + additionalProperties.put(key, value) + } + + fun putAllAdditionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.putAll(additionalProperties) + } + + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is Metadata && additionalProperties == other.additionalProperties /* spotless:on */ + } + + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(additionalProperties) } + /* spotless:on */ + + override fun hashCode(): Int = hashCode + + override fun toString() = "Metadata{additionalProperties=$additionalProperties}" + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is DimensionalPriceGroupCreateParams && billableMetricId == other.billableMetricId && dimensions == other.dimensions && name == other.name && externalDimensionalPriceGroupId == other.externalDimensionalPriceGroupId && metadata == other.metadata && additionalHeaders == other.additionalHeaders && additionalQueryParams == other.additionalQueryParams && additionalBodyProperties == other.additionalBodyProperties /* spotless:on */ + } + + override fun hashCode(): Int = /* spotless:off */ Objects.hash(billableMetricId, dimensions, name, externalDimensionalPriceGroupId, metadata, additionalHeaders, additionalQueryParams, additionalBodyProperties) /* spotless:on */ + + override fun toString() = + "DimensionalPriceGroupCreateParams{billableMetricId=$billableMetricId, dimensions=$dimensions, name=$name, externalDimensionalPriceGroupId=$externalDimensionalPriceGroupId, metadata=$metadata, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams, additionalBodyProperties=$additionalBodyProperties}" +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams.kt new file mode 100644 index 00000000..cbefe11c --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams.kt @@ -0,0 +1,189 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.http.Headers +import com.withorb.api.core.http.QueryParams +import java.util.Objects + +class DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams +constructor( + private val externalDimensionalPriceGroupId: String, + private val additionalHeaders: Headers, + private val additionalQueryParams: QueryParams, +) { + + fun externalDimensionalPriceGroupId(): String = externalDimensionalPriceGroupId + + fun _additionalHeaders(): Headers = additionalHeaders + + fun _additionalQueryParams(): QueryParams = additionalQueryParams + + @JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders + + @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams + + fun getPathParam(index: Int): String { + return when (index) { + 0 -> externalDimensionalPriceGroupId + else -> "" + } + } + + fun toBuilder() = Builder().from(this) + + companion object { + + @JvmStatic fun builder() = Builder() + } + + @NoAutoDetect + class Builder { + + private var externalDimensionalPriceGroupId: String? = null + private var additionalHeaders: Headers.Builder = Headers.builder() + private var additionalQueryParams: QueryParams.Builder = QueryParams.builder() + + @JvmSynthetic + internal fun from( + dimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams: + DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams + ) = apply { + externalDimensionalPriceGroupId = + dimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams + .externalDimensionalPriceGroupId + additionalHeaders = + dimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams.additionalHeaders + .toBuilder() + additionalQueryParams = + dimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams + .additionalQueryParams + .toBuilder() + } + + fun externalDimensionalPriceGroupId(externalDimensionalPriceGroupId: String) = apply { + this.externalDimensionalPriceGroupId = externalDimensionalPriceGroupId + } + + fun additionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.clear() + putAllAdditionalHeaders(additionalHeaders) + } + + fun additionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.clear() + putAllAdditionalHeaders(additionalHeaders) + } + + fun putAdditionalHeader(name: String, value: String) = apply { + additionalHeaders.put(name, value) + } + + fun putAdditionalHeaders(name: String, values: Iterable) = apply { + additionalHeaders.put(name, values) + } + + fun putAllAdditionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.putAll(additionalHeaders) + } + + fun putAllAdditionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.putAll(additionalHeaders) + } + + fun replaceAdditionalHeaders(name: String, value: String) = apply { + additionalHeaders.replace(name, value) + } + + fun replaceAdditionalHeaders(name: String, values: Iterable) = apply { + additionalHeaders.replace(name, values) + } + + fun replaceAllAdditionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.replaceAll(additionalHeaders) + } + + fun replaceAllAdditionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.replaceAll(additionalHeaders) + } + + fun removeAdditionalHeaders(name: String) = apply { additionalHeaders.remove(name) } + + fun removeAllAdditionalHeaders(names: Set) = apply { + additionalHeaders.removeAll(names) + } + + fun additionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.clear() + putAllAdditionalQueryParams(additionalQueryParams) + } + + fun additionalQueryParams(additionalQueryParams: Map>) = apply { + this.additionalQueryParams.clear() + putAllAdditionalQueryParams(additionalQueryParams) + } + + fun putAdditionalQueryParam(key: String, value: String) = apply { + additionalQueryParams.put(key, value) + } + + fun putAdditionalQueryParams(key: String, values: Iterable) = apply { + additionalQueryParams.put(key, values) + } + + fun putAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.putAll(additionalQueryParams) + } + + fun putAllAdditionalQueryParams(additionalQueryParams: Map>) = + apply { + this.additionalQueryParams.putAll(additionalQueryParams) + } + + fun replaceAdditionalQueryParams(key: String, value: String) = apply { + additionalQueryParams.replace(key, value) + } + + fun replaceAdditionalQueryParams(key: String, values: Iterable) = apply { + additionalQueryParams.replace(key, values) + } + + fun replaceAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.replaceAll(additionalQueryParams) + } + + fun replaceAllAdditionalQueryParams(additionalQueryParams: Map>) = + apply { + this.additionalQueryParams.replaceAll(additionalQueryParams) + } + + fun removeAdditionalQueryParams(key: String) = apply { additionalQueryParams.remove(key) } + + fun removeAllAdditionalQueryParams(keys: Set) = apply { + additionalQueryParams.removeAll(keys) + } + + fun build(): DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams = + DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams( + checkNotNull(externalDimensionalPriceGroupId) { + "`externalDimensionalPriceGroupId` is required but was not set" + }, + additionalHeaders.build(), + additionalQueryParams.build(), + ) + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams && externalDimensionalPriceGroupId == other.externalDimensionalPriceGroupId && additionalHeaders == other.additionalHeaders && additionalQueryParams == other.additionalQueryParams /* spotless:on */ + } + + override fun hashCode(): Int = /* spotless:off */ Objects.hash(externalDimensionalPriceGroupId, additionalHeaders, additionalQueryParams) /* spotless:on */ + + override fun toString() = + "DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams{externalDimensionalPriceGroupId=$externalDimensionalPriceGroupId, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams}" +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupListPage.kt new file mode 100644 index 00000000..ca357416 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupListPage.kt @@ -0,0 +1,206 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.fasterxml.jackson.annotation.JsonAnyGetter +import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.annotation.JsonProperty +import com.withorb.api.core.ExcludeMissing +import com.withorb.api.core.JsonField +import com.withorb.api.core.JsonMissing +import com.withorb.api.core.JsonValue +import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap +import com.withorb.api.core.toImmutable +import com.withorb.api.services.blocking.DimensionalPriceGroupService +import java.util.Objects +import java.util.Optional +import java.util.stream.Stream +import java.util.stream.StreamSupport + +class DimensionalPriceGroupListPage +private constructor( + private val dimensionalPriceGroupsService: DimensionalPriceGroupService, + private val params: DimensionalPriceGroupListParams, + private val response: Response, +) { + + fun response(): Response = response + + fun data(): List = response().data() + + fun paginationMetadata(): PaginationMetadata = response().paginationMetadata() + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is DimensionalPriceGroupListPage && dimensionalPriceGroupsService == other.dimensionalPriceGroupsService && params == other.params && response == other.response /* spotless:on */ + } + + override fun hashCode(): Int = /* spotless:off */ Objects.hash(dimensionalPriceGroupsService, params, response) /* spotless:on */ + + override fun toString() = + "DimensionalPriceGroupListPage{dimensionalPriceGroupsService=$dimensionalPriceGroupsService, params=$params, response=$response}" + + fun hasNextPage(): Boolean { + if (data().isEmpty()) { + return false + } + + return paginationMetadata().nextCursor().isPresent + } + + fun getNextPageParams(): Optional { + if (!hasNextPage()) { + return Optional.empty() + } + + return Optional.of( + DimensionalPriceGroupListParams.builder() + .from(params) + .apply { paginationMetadata().nextCursor().ifPresent { this.cursor(it) } } + .build() + ) + } + + fun getNextPage(): Optional { + return getNextPageParams().map { dimensionalPriceGroupsService.list(it) } + } + + fun autoPager(): AutoPager = AutoPager(this) + + companion object { + + @JvmStatic + fun of( + dimensionalPriceGroupsService: DimensionalPriceGroupService, + params: DimensionalPriceGroupListParams, + response: Response + ) = + DimensionalPriceGroupListPage( + dimensionalPriceGroupsService, + params, + response, + ) + } + + @NoAutoDetect + class Response + @JsonCreator + constructor( + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), + ) { + + private var validated: Boolean = false + + fun data(): List = data.getNullable("data") ?: listOf() + + fun paginationMetadata(): PaginationMetadata = + paginationMetadata.getRequired("pagination_metadata") + + @JsonProperty("data") + fun _data(): Optional>> = Optional.ofNullable(data) + + @JsonProperty("pagination_metadata") + fun _paginationMetadata(): Optional> = + Optional.ofNullable(paginationMetadata) + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = additionalProperties + + fun validate(): Response = apply { + if (!validated) { + data().map { it.validate() } + paginationMetadata().validate() + validated = true + } + } + + fun toBuilder() = Builder().from(this) + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is Response && data == other.data && paginationMetadata == other.paginationMetadata && additionalProperties == other.additionalProperties /* spotless:on */ + } + + override fun hashCode(): Int = /* spotless:off */ Objects.hash(data, paginationMetadata, additionalProperties) /* spotless:on */ + + override fun toString() = + "Response{data=$data, paginationMetadata=$paginationMetadata, additionalProperties=$additionalProperties}" + + companion object { + + @JvmStatic fun builder() = Builder() + } + + class Builder { + + private var data: JsonField> = JsonMissing.of() + private var paginationMetadata: JsonField = JsonMissing.of() + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(page: Response) = apply { + this.data = page.data + this.paginationMetadata = page.paginationMetadata + this.additionalProperties.putAll(page.additionalProperties) + } + + fun data(data: List) = data(JsonField.of(data)) + + fun data(data: JsonField>) = apply { this.data = data } + + fun paginationMetadata(paginationMetadata: PaginationMetadata) = + paginationMetadata(JsonField.of(paginationMetadata)) + + fun paginationMetadata(paginationMetadata: JsonField) = apply { + this.paginationMetadata = paginationMetadata + } + + fun putAdditionalProperty(key: String, value: JsonValue) = apply { + this.additionalProperties.put(key, value) + } + + fun build() = + Response( + data, + paginationMetadata, + additionalProperties.toImmutable(), + ) + } + } + + class AutoPager + constructor( + private val firstPage: DimensionalPriceGroupListPage, + ) : Iterable { + + override fun iterator(): Iterator = iterator { + var page = firstPage + var index = 0 + while (true) { + while (index < page.data().size) { + yield(page.data()[index++]) + } + page = page.getNextPage().orElse(null) ?: break + index = 0 + } + } + + fun stream(): Stream { + return StreamSupport.stream(spliterator(), false) + } + } +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupListPageAsync.kt new file mode 100644 index 00000000..f55e54b1 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupListPageAsync.kt @@ -0,0 +1,219 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.fasterxml.jackson.annotation.JsonAnyGetter +import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.annotation.JsonProperty +import com.withorb.api.core.ExcludeMissing +import com.withorb.api.core.JsonField +import com.withorb.api.core.JsonMissing +import com.withorb.api.core.JsonValue +import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap +import com.withorb.api.core.toImmutable +import com.withorb.api.services.async.DimensionalPriceGroupServiceAsync +import java.util.Objects +import java.util.Optional +import java.util.concurrent.CompletableFuture +import java.util.concurrent.Executor +import java.util.function.Predicate + +class DimensionalPriceGroupListPageAsync +private constructor( + private val dimensionalPriceGroupsService: DimensionalPriceGroupServiceAsync, + private val params: DimensionalPriceGroupListParams, + private val response: Response, +) { + + fun response(): Response = response + + fun data(): List = response().data() + + fun paginationMetadata(): PaginationMetadata = response().paginationMetadata() + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is DimensionalPriceGroupListPageAsync && dimensionalPriceGroupsService == other.dimensionalPriceGroupsService && params == other.params && response == other.response /* spotless:on */ + } + + override fun hashCode(): Int = /* spotless:off */ Objects.hash(dimensionalPriceGroupsService, params, response) /* spotless:on */ + + override fun toString() = + "DimensionalPriceGroupListPageAsync{dimensionalPriceGroupsService=$dimensionalPriceGroupsService, params=$params, response=$response}" + + fun hasNextPage(): Boolean { + if (data().isEmpty()) { + return false + } + + return paginationMetadata().nextCursor().isPresent + } + + fun getNextPageParams(): Optional { + if (!hasNextPage()) { + return Optional.empty() + } + + return Optional.of( + DimensionalPriceGroupListParams.builder() + .from(params) + .apply { paginationMetadata().nextCursor().ifPresent { this.cursor(it) } } + .build() + ) + } + + fun getNextPage(): CompletableFuture> { + return getNextPageParams() + .map { dimensionalPriceGroupsService.list(it).thenApply { Optional.of(it) } } + .orElseGet { CompletableFuture.completedFuture(Optional.empty()) } + } + + fun autoPager(): AutoPager = AutoPager(this) + + companion object { + + @JvmStatic + fun of( + dimensionalPriceGroupsService: DimensionalPriceGroupServiceAsync, + params: DimensionalPriceGroupListParams, + response: Response + ) = + DimensionalPriceGroupListPageAsync( + dimensionalPriceGroupsService, + params, + response, + ) + } + + @NoAutoDetect + class Response + @JsonCreator + constructor( + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), + ) { + + private var validated: Boolean = false + + fun data(): List = data.getNullable("data") ?: listOf() + + fun paginationMetadata(): PaginationMetadata = + paginationMetadata.getRequired("pagination_metadata") + + @JsonProperty("data") + fun _data(): Optional>> = Optional.ofNullable(data) + + @JsonProperty("pagination_metadata") + fun _paginationMetadata(): Optional> = + Optional.ofNullable(paginationMetadata) + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = additionalProperties + + fun validate(): Response = apply { + if (!validated) { + data().map { it.validate() } + paginationMetadata().validate() + validated = true + } + } + + fun toBuilder() = Builder().from(this) + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is Response && data == other.data && paginationMetadata == other.paginationMetadata && additionalProperties == other.additionalProperties /* spotless:on */ + } + + override fun hashCode(): Int = /* spotless:off */ Objects.hash(data, paginationMetadata, additionalProperties) /* spotless:on */ + + override fun toString() = + "Response{data=$data, paginationMetadata=$paginationMetadata, additionalProperties=$additionalProperties}" + + companion object { + + @JvmStatic fun builder() = Builder() + } + + class Builder { + + private var data: JsonField> = JsonMissing.of() + private var paginationMetadata: JsonField = JsonMissing.of() + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(page: Response) = apply { + this.data = page.data + this.paginationMetadata = page.paginationMetadata + this.additionalProperties.putAll(page.additionalProperties) + } + + fun data(data: List) = data(JsonField.of(data)) + + fun data(data: JsonField>) = apply { this.data = data } + + fun paginationMetadata(paginationMetadata: PaginationMetadata) = + paginationMetadata(JsonField.of(paginationMetadata)) + + fun paginationMetadata(paginationMetadata: JsonField) = apply { + this.paginationMetadata = paginationMetadata + } + + fun putAdditionalProperty(key: String, value: JsonValue) = apply { + this.additionalProperties.put(key, value) + } + + fun build() = + Response( + data, + paginationMetadata, + additionalProperties.toImmutable(), + ) + } + } + + class AutoPager + constructor( + private val firstPage: DimensionalPriceGroupListPageAsync, + ) { + + fun forEach( + action: Predicate, + executor: Executor + ): CompletableFuture { + fun CompletableFuture>.forEach( + action: (DimensionalPriceGroup) -> Boolean, + executor: Executor + ): CompletableFuture = + thenComposeAsync( + { page -> + page + .filter { it.data().all(action) } + .map { it.getNextPage().forEach(action, executor) } + .orElseGet { CompletableFuture.completedFuture(null) } + }, + executor + ) + return CompletableFuture.completedFuture(Optional.of(firstPage)) + .forEach(action::test, executor) + } + + fun toList(executor: Executor): CompletableFuture> { + val values = mutableListOf() + return forEach(values::add, executor).thenApply { values } + } + } +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupListParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupListParams.kt new file mode 100644 index 00000000..b466ed88 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupListParams.kt @@ -0,0 +1,191 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.http.Headers +import com.withorb.api.core.http.QueryParams +import java.util.Objects +import java.util.Optional + +class DimensionalPriceGroupListParams +constructor( + private val cursor: String?, + private val limit: Long?, + private val additionalHeaders: Headers, + private val additionalQueryParams: QueryParams, +) { + + fun cursor(): Optional = Optional.ofNullable(cursor) + + fun limit(): Optional = Optional.ofNullable(limit) + + fun _additionalHeaders(): Headers = additionalHeaders + + fun _additionalQueryParams(): QueryParams = additionalQueryParams + + @JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders + + @JvmSynthetic + internal fun getQueryParams(): QueryParams { + val queryParams = QueryParams.builder() + this.cursor?.let { queryParams.put("cursor", listOf(it.toString())) } + this.limit?.let { queryParams.put("limit", listOf(it.toString())) } + queryParams.putAll(additionalQueryParams) + return queryParams.build() + } + + fun toBuilder() = Builder().from(this) + + companion object { + + @JvmStatic fun builder() = Builder() + } + + @NoAutoDetect + class Builder { + + private var cursor: String? = null + private var limit: Long? = null + private var additionalHeaders: Headers.Builder = Headers.builder() + private var additionalQueryParams: QueryParams.Builder = QueryParams.builder() + + @JvmSynthetic + internal fun from(dimensionalPriceGroupListParams: DimensionalPriceGroupListParams) = + apply { + cursor = dimensionalPriceGroupListParams.cursor + limit = dimensionalPriceGroupListParams.limit + additionalHeaders = dimensionalPriceGroupListParams.additionalHeaders.toBuilder() + additionalQueryParams = + dimensionalPriceGroupListParams.additionalQueryParams.toBuilder() + } + + /** + * Cursor for pagination. This can be populated by the `next_cursor` value returned from the + * initial request. + */ + fun cursor(cursor: String) = apply { this.cursor = cursor } + + /** The number of items to fetch. Defaults to 20. */ + fun limit(limit: Long) = apply { this.limit = limit } + + fun additionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.clear() + putAllAdditionalHeaders(additionalHeaders) + } + + fun additionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.clear() + putAllAdditionalHeaders(additionalHeaders) + } + + fun putAdditionalHeader(name: String, value: String) = apply { + additionalHeaders.put(name, value) + } + + fun putAdditionalHeaders(name: String, values: Iterable) = apply { + additionalHeaders.put(name, values) + } + + fun putAllAdditionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.putAll(additionalHeaders) + } + + fun putAllAdditionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.putAll(additionalHeaders) + } + + fun replaceAdditionalHeaders(name: String, value: String) = apply { + additionalHeaders.replace(name, value) + } + + fun replaceAdditionalHeaders(name: String, values: Iterable) = apply { + additionalHeaders.replace(name, values) + } + + fun replaceAllAdditionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.replaceAll(additionalHeaders) + } + + fun replaceAllAdditionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.replaceAll(additionalHeaders) + } + + fun removeAdditionalHeaders(name: String) = apply { additionalHeaders.remove(name) } + + fun removeAllAdditionalHeaders(names: Set) = apply { + additionalHeaders.removeAll(names) + } + + fun additionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.clear() + putAllAdditionalQueryParams(additionalQueryParams) + } + + fun additionalQueryParams(additionalQueryParams: Map>) = apply { + this.additionalQueryParams.clear() + putAllAdditionalQueryParams(additionalQueryParams) + } + + fun putAdditionalQueryParam(key: String, value: String) = apply { + additionalQueryParams.put(key, value) + } + + fun putAdditionalQueryParams(key: String, values: Iterable) = apply { + additionalQueryParams.put(key, values) + } + + fun putAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.putAll(additionalQueryParams) + } + + fun putAllAdditionalQueryParams(additionalQueryParams: Map>) = + apply { + this.additionalQueryParams.putAll(additionalQueryParams) + } + + fun replaceAdditionalQueryParams(key: String, value: String) = apply { + additionalQueryParams.replace(key, value) + } + + fun replaceAdditionalQueryParams(key: String, values: Iterable) = apply { + additionalQueryParams.replace(key, values) + } + + fun replaceAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.replaceAll(additionalQueryParams) + } + + fun replaceAllAdditionalQueryParams(additionalQueryParams: Map>) = + apply { + this.additionalQueryParams.replaceAll(additionalQueryParams) + } + + fun removeAdditionalQueryParams(key: String) = apply { additionalQueryParams.remove(key) } + + fun removeAllAdditionalQueryParams(keys: Set) = apply { + additionalQueryParams.removeAll(keys) + } + + fun build(): DimensionalPriceGroupListParams = + DimensionalPriceGroupListParams( + cursor, + limit, + additionalHeaders.build(), + additionalQueryParams.build(), + ) + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is DimensionalPriceGroupListParams && cursor == other.cursor && limit == other.limit && additionalHeaders == other.additionalHeaders && additionalQueryParams == other.additionalQueryParams /* spotless:on */ + } + + override fun hashCode(): Int = /* spotless:off */ Objects.hash(cursor, limit, additionalHeaders, additionalQueryParams) /* spotless:on */ + + override fun toString() = + "DimensionalPriceGroupListParams{cursor=$cursor, limit=$limit, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams}" +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupRetrieveParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupRetrieveParams.kt new file mode 100644 index 00000000..1c9e6897 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroupRetrieveParams.kt @@ -0,0 +1,182 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.http.Headers +import com.withorb.api.core.http.QueryParams +import java.util.Objects + +class DimensionalPriceGroupRetrieveParams +constructor( + private val dimensionalPriceGroupId: String, + private val additionalHeaders: Headers, + private val additionalQueryParams: QueryParams, +) { + + fun dimensionalPriceGroupId(): String = dimensionalPriceGroupId + + fun _additionalHeaders(): Headers = additionalHeaders + + fun _additionalQueryParams(): QueryParams = additionalQueryParams + + @JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders + + @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams + + fun getPathParam(index: Int): String { + return when (index) { + 0 -> dimensionalPriceGroupId + else -> "" + } + } + + fun toBuilder() = Builder().from(this) + + companion object { + + @JvmStatic fun builder() = Builder() + } + + @NoAutoDetect + class Builder { + + private var dimensionalPriceGroupId: String? = null + private var additionalHeaders: Headers.Builder = Headers.builder() + private var additionalQueryParams: QueryParams.Builder = QueryParams.builder() + + @JvmSynthetic + internal fun from( + dimensionalPriceGroupRetrieveParams: DimensionalPriceGroupRetrieveParams + ) = apply { + dimensionalPriceGroupId = dimensionalPriceGroupRetrieveParams.dimensionalPriceGroupId + additionalHeaders = dimensionalPriceGroupRetrieveParams.additionalHeaders.toBuilder() + additionalQueryParams = + dimensionalPriceGroupRetrieveParams.additionalQueryParams.toBuilder() + } + + fun dimensionalPriceGroupId(dimensionalPriceGroupId: String) = apply { + this.dimensionalPriceGroupId = dimensionalPriceGroupId + } + + fun additionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.clear() + putAllAdditionalHeaders(additionalHeaders) + } + + fun additionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.clear() + putAllAdditionalHeaders(additionalHeaders) + } + + fun putAdditionalHeader(name: String, value: String) = apply { + additionalHeaders.put(name, value) + } + + fun putAdditionalHeaders(name: String, values: Iterable) = apply { + additionalHeaders.put(name, values) + } + + fun putAllAdditionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.putAll(additionalHeaders) + } + + fun putAllAdditionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.putAll(additionalHeaders) + } + + fun replaceAdditionalHeaders(name: String, value: String) = apply { + additionalHeaders.replace(name, value) + } + + fun replaceAdditionalHeaders(name: String, values: Iterable) = apply { + additionalHeaders.replace(name, values) + } + + fun replaceAllAdditionalHeaders(additionalHeaders: Headers) = apply { + this.additionalHeaders.replaceAll(additionalHeaders) + } + + fun replaceAllAdditionalHeaders(additionalHeaders: Map>) = apply { + this.additionalHeaders.replaceAll(additionalHeaders) + } + + fun removeAdditionalHeaders(name: String) = apply { additionalHeaders.remove(name) } + + fun removeAllAdditionalHeaders(names: Set) = apply { + additionalHeaders.removeAll(names) + } + + fun additionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.clear() + putAllAdditionalQueryParams(additionalQueryParams) + } + + fun additionalQueryParams(additionalQueryParams: Map>) = apply { + this.additionalQueryParams.clear() + putAllAdditionalQueryParams(additionalQueryParams) + } + + fun putAdditionalQueryParam(key: String, value: String) = apply { + additionalQueryParams.put(key, value) + } + + fun putAdditionalQueryParams(key: String, values: Iterable) = apply { + additionalQueryParams.put(key, values) + } + + fun putAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.putAll(additionalQueryParams) + } + + fun putAllAdditionalQueryParams(additionalQueryParams: Map>) = + apply { + this.additionalQueryParams.putAll(additionalQueryParams) + } + + fun replaceAdditionalQueryParams(key: String, value: String) = apply { + additionalQueryParams.replace(key, value) + } + + fun replaceAdditionalQueryParams(key: String, values: Iterable) = apply { + additionalQueryParams.replace(key, values) + } + + fun replaceAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply { + this.additionalQueryParams.replaceAll(additionalQueryParams) + } + + fun replaceAllAdditionalQueryParams(additionalQueryParams: Map>) = + apply { + this.additionalQueryParams.replaceAll(additionalQueryParams) + } + + fun removeAdditionalQueryParams(key: String) = apply { additionalQueryParams.remove(key) } + + fun removeAllAdditionalQueryParams(keys: Set) = apply { + additionalQueryParams.removeAll(keys) + } + + fun build(): DimensionalPriceGroupRetrieveParams = + DimensionalPriceGroupRetrieveParams( + checkNotNull(dimensionalPriceGroupId) { + "`dimensionalPriceGroupId` is required but was not set" + }, + additionalHeaders.build(), + additionalQueryParams.build(), + ) + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is DimensionalPriceGroupRetrieveParams && dimensionalPriceGroupId == other.dimensionalPriceGroupId && additionalHeaders == other.additionalHeaders && additionalQueryParams == other.additionalQueryParams /* spotless:on */ + } + + override fun hashCode(): Int = /* spotless:off */ Objects.hash(dimensionalPriceGroupId, additionalHeaders, additionalQueryParams) /* spotless:on */ + + override fun toString() = + "DimensionalPriceGroupRetrieveParams{dimensionalPriceGroupId=$dimensionalPriceGroupId, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams}" +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroups.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroups.kt new file mode 100644 index 00000000..e4a8d5c9 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/DimensionalPriceGroups.kt @@ -0,0 +1,130 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.fasterxml.jackson.annotation.JsonAnyGetter +import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.annotation.JsonProperty +import com.withorb.api.core.ExcludeMissing +import com.withorb.api.core.JsonField +import com.withorb.api.core.JsonMissing +import com.withorb.api.core.JsonValue +import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap +import com.withorb.api.core.toImmutable +import java.util.Objects + +@NoAutoDetect +class DimensionalPriceGroups +@JsonCreator +private constructor( + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + @ExcludeMissing + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), +) { + + fun data(): List = data.getRequired("data") + + fun paginationMetadata(): PaginationMetadata = + paginationMetadata.getRequired("pagination_metadata") + + @JsonProperty("data") @ExcludeMissing fun _data() = data + + @JsonProperty("pagination_metadata") + @ExcludeMissing + fun _paginationMetadata() = paginationMetadata + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = additionalProperties + + private var validated: Boolean = false + + fun validate(): DimensionalPriceGroups = apply { + if (!validated) { + data().forEach { it.validate() } + paginationMetadata().validate() + validated = true + } + } + + fun toBuilder() = Builder().from(this) + + companion object { + + @JvmStatic fun builder() = Builder() + } + + class Builder { + + private var data: JsonField> = JsonMissing.of() + private var paginationMetadata: JsonField = JsonMissing.of() + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(dimensionalPriceGroups: DimensionalPriceGroups) = apply { + data = dimensionalPriceGroups.data + paginationMetadata = dimensionalPriceGroups.paginationMetadata + additionalProperties = dimensionalPriceGroups.additionalProperties.toMutableMap() + } + + fun data(data: List) = data(JsonField.of(data)) + + fun data(data: JsonField>) = apply { this.data = data } + + fun paginationMetadata(paginationMetadata: PaginationMetadata) = + paginationMetadata(JsonField.of(paginationMetadata)) + + fun paginationMetadata(paginationMetadata: JsonField) = apply { + this.paginationMetadata = paginationMetadata + } + + fun additionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.clear() + putAllAdditionalProperties(additionalProperties) + } + + fun putAdditionalProperty(key: String, value: JsonValue) = apply { + additionalProperties.put(key, value) + } + + fun putAllAdditionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.putAll(additionalProperties) + } + + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + fun build(): DimensionalPriceGroups = + DimensionalPriceGroups( + data.map { it.toImmutable() }, + paginationMetadata, + additionalProperties.toImmutable(), + ) + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return /* spotless:off */ other is DimensionalPriceGroups && data == other.data && paginationMetadata == other.paginationMetadata && additionalProperties == other.additionalProperties /* spotless:on */ + } + + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(data, paginationMetadata, additionalProperties) } + /* spotless:on */ + + override fun hashCode(): Int = hashCode + + override fun toString() = + "DimensionalPriceGroups{data=$data, paginationMetadata=$paginationMetadata, additionalProperties=$additionalProperties}" +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Discount.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Discount.kt index c6d992b7..b2c048d5 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Discount.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Discount.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -204,19 +205,26 @@ private constructor( } } - @JsonDeserialize(builder = UsageDiscount.Builder::class) @NoAutoDetect class UsageDiscount + @JsonCreator private constructor( - private val discountType: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -256,6 +264,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscount = apply { if (!validated) { discountType() @@ -283,17 +293,15 @@ private constructor( @JvmSynthetic internal fun from(usageDiscount: UsageDiscount) = apply { - this.discountType = usageDiscount.discountType - this.appliesToPriceIds = usageDiscount.appliesToPriceIds - this.reason = usageDiscount.reason + discountType = usageDiscount.discountType + appliesToPriceIds = usageDiscount.appliesToPriceIds + reason = usageDiscount.reason this.usageDiscount = usageDiscount.usageDiscount - additionalProperties(usageDiscount.additionalProperties) + additionalProperties = usageDiscount.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -309,16 +317,12 @@ private constructor( * List of price_ids that this discount applies to. For plan/plan phase discounts, this * can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun reason(reason: String) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } /** @@ -331,26 +335,29 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this discount * is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscount = UsageDiscount( discountType, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EvaluatePriceGroup.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EvaluatePriceGroup.kt index e32b8798..3976869a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EvaluatePriceGroup.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EvaluatePriceGroup.kt @@ -4,6 +4,7 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.core.ObjectCodec @@ -20,23 +21,28 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = EvaluatePriceGroup.Builder::class) @NoAutoDetect class EvaluatePriceGroup +@JsonCreator private constructor( - private val groupingValues: JsonField>, - private val quantity: JsonField, - private val amount: JsonField, - private val additionalProperties: Map, + @JsonProperty("grouping_values") + @ExcludeMissing + private val groupingValues: JsonField> = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The values for the group in the order specified by `grouping_keys` */ fun groupingValues(): List = groupingValues.getRequired("grouping_values") @@ -59,6 +65,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EvaluatePriceGroup = apply { if (!validated) { groupingValues() @@ -84,10 +92,10 @@ private constructor( @JvmSynthetic internal fun from(evaluatePriceGroup: EvaluatePriceGroup) = apply { - this.groupingValues = evaluatePriceGroup.groupingValues - this.quantity = evaluatePriceGroup.quantity - this.amount = evaluatePriceGroup.amount - additionalProperties(evaluatePriceGroup.additionalProperties) + groupingValues = evaluatePriceGroup.groupingValues + quantity = evaluatePriceGroup.quantity + amount = evaluatePriceGroup.amount + additionalProperties = evaluatePriceGroup.additionalProperties.toMutableMap() } /** The values for the group in the order specified by `grouping_keys` */ @@ -95,8 +103,6 @@ private constructor( groupingValues(JsonField.of(groupingValues)) /** The values for the group in the order specified by `grouping_keys` */ - @JsonProperty("grouping_values") - @ExcludeMissing fun groupingValues(groupingValues: JsonField>) = apply { this.groupingValues = groupingValues } @@ -105,32 +111,33 @@ private constructor( fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) /** The price's usage quantity for the group */ - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } /** The price's output for the group */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The price's output for the group */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EvaluatePriceGroup = EvaluatePriceGroup( groupingValues.map { it.toImmutable() }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCloseResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCloseResponse.kt index 8c2ad7e9..5b06708a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCloseResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCloseResponse.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -23,25 +23,41 @@ import java.util.Optional * A backfill represents an update to historical usage data, adding or replacing events in a * timeframe. */ -@JsonDeserialize(builder = EventBackfillCloseResponse.Builder::class) @NoAutoDetect class EventBackfillCloseResponse +@JsonCreator private constructor( - private val id: JsonField, - private val status: JsonField, - private val createdAt: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val eventsIngested: JsonField, - private val closeTime: JsonField, - private val revertedAt: JsonField, - private val customerId: JsonField, - private val deprecationFilter: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonProperty("events_ingested") + @ExcludeMissing + private val eventsIngested: JsonField = JsonMissing.of(), + @JsonProperty("close_time") + @ExcludeMissing + private val closeTime: JsonField = JsonMissing.of(), + @JsonProperty("reverted_at") + @ExcludeMissing + private val revertedAt: JsonField = JsonMissing.of(), + @JsonProperty("customer_id") + @ExcludeMissing + private val customerId: JsonField = JsonMissing.of(), + @JsonProperty("deprecation_filter") + @ExcludeMissing + private val deprecationFilter: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** The status of the backfill. */ @@ -119,6 +135,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventBackfillCloseResponse = apply { if (!validated) { id() @@ -158,50 +176,42 @@ private constructor( @JvmSynthetic internal fun from(eventBackfillCloseResponse: EventBackfillCloseResponse) = apply { - this.id = eventBackfillCloseResponse.id - this.status = eventBackfillCloseResponse.status - this.createdAt = eventBackfillCloseResponse.createdAt - this.timeframeStart = eventBackfillCloseResponse.timeframeStart - this.timeframeEnd = eventBackfillCloseResponse.timeframeEnd - this.eventsIngested = eventBackfillCloseResponse.eventsIngested - this.closeTime = eventBackfillCloseResponse.closeTime - this.revertedAt = eventBackfillCloseResponse.revertedAt - this.customerId = eventBackfillCloseResponse.customerId - this.deprecationFilter = eventBackfillCloseResponse.deprecationFilter - additionalProperties(eventBackfillCloseResponse.additionalProperties) + id = eventBackfillCloseResponse.id + status = eventBackfillCloseResponse.status + createdAt = eventBackfillCloseResponse.createdAt + timeframeStart = eventBackfillCloseResponse.timeframeStart + timeframeEnd = eventBackfillCloseResponse.timeframeEnd + eventsIngested = eventBackfillCloseResponse.eventsIngested + closeTime = eventBackfillCloseResponse.closeTime + revertedAt = eventBackfillCloseResponse.revertedAt + customerId = eventBackfillCloseResponse.customerId + deprecationFilter = eventBackfillCloseResponse.deprecationFilter + additionalProperties = eventBackfillCloseResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The status of the backfill. */ fun status(status: Status) = status(JsonField.of(status)) /** The status of the backfill. */ - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } @@ -210,8 +220,6 @@ private constructor( fun eventsIngested(eventsIngested: Long) = eventsIngested(JsonField.of(eventsIngested)) /** The number of events ingested in this backfill. */ - @JsonProperty("events_ingested") - @ExcludeMissing fun eventsIngested(eventsIngested: JsonField) = apply { this.eventsIngested = eventsIngested } @@ -226,16 +234,12 @@ private constructor( * If in the future, the time at which the backfill will automatically close. If in the * past, the time at which the backfill was closed. */ - @JsonProperty("close_time") - @ExcludeMissing fun closeTime(closeTime: JsonField) = apply { this.closeTime = closeTime } /** The time at which this backfill was reverted. */ fun revertedAt(revertedAt: OffsetDateTime) = revertedAt(JsonField.of(revertedAt)) /** The time at which this backfill was reverted. */ - @JsonProperty("reverted_at") - @ExcludeMissing fun revertedAt(revertedAt: JsonField) = apply { this.revertedAt = revertedAt } @@ -250,8 +254,6 @@ private constructor( * The Orb-generated ID of the customer to which this backfill is scoped. If `null`, this * backfill is scoped to all customers. */ - @JsonProperty("customer_id") - @ExcludeMissing fun customerId(customerId: JsonField) = apply { this.customerId = customerId } /** @@ -267,26 +269,29 @@ private constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties) used to * filter the set of events to deprecate */ - @JsonProperty("deprecation_filter") - @ExcludeMissing fun deprecationFilter(deprecationFilter: JsonField) = apply { this.deprecationFilter = deprecationFilter } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventBackfillCloseResponse = EventBackfillCloseResponse( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCreateParams.kt index 13d85bd2..9e359a47 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCreateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects @@ -68,58 +69,63 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = EventBackfillCreateBody.Builder::class) @NoAutoDetect class EventBackfillCreateBody + @JsonCreator internal constructor( - private val timeframeEnd: OffsetDateTime?, - private val timeframeStart: OffsetDateTime?, - private val closeTime: OffsetDateTime?, - private val customerId: String?, - private val deprecationFilter: String?, - private val externalCustomerId: String?, - private val replaceExistingEvents: Boolean?, - private val additionalProperties: Map, + @JsonProperty("timeframe_end") private val timeframeEnd: OffsetDateTime, + @JsonProperty("timeframe_start") private val timeframeStart: OffsetDateTime, + @JsonProperty("close_time") private val closeTime: OffsetDateTime?, + @JsonProperty("customer_id") private val customerId: String?, + @JsonProperty("deprecation_filter") private val deprecationFilter: String?, + @JsonProperty("external_customer_id") private val externalCustomerId: String?, + @JsonProperty("replace_existing_events") private val replaceExistingEvents: Boolean?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The (exclusive) end of the usage timeframe affected by this backfill. */ - @JsonProperty("timeframe_end") fun timeframeEnd(): OffsetDateTime? = timeframeEnd + @JsonProperty("timeframe_end") fun timeframeEnd(): OffsetDateTime = timeframeEnd /** The (inclusive) start of the usage timeframe affected by this backfill. */ - @JsonProperty("timeframe_start") fun timeframeStart(): OffsetDateTime? = timeframeStart + @JsonProperty("timeframe_start") fun timeframeStart(): OffsetDateTime = timeframeStart /** * The time at which no more events will be accepted for this backfill. The backfill will * automatically begin reflecting throughout Orb at the close time. If not specified, it * will default to 1 day after the creation of the backfill. */ - @JsonProperty("close_time") fun closeTime(): OffsetDateTime? = closeTime + @JsonProperty("close_time") + fun closeTime(): Optional = Optional.ofNullable(closeTime) /** * The Orb-generated ID of the customer to which this backfill is scoped. Omitting this * field will scope the backfill to all customers. */ - @JsonProperty("customer_id") fun customerId(): String? = customerId + @JsonProperty("customer_id") + fun customerId(): Optional = Optional.ofNullable(customerId) /** * A boolean * [computed property](../guides/extensibility/advanced-metrics#computed-properties) used to * filter the set of events to deprecate */ - @JsonProperty("deprecation_filter") fun deprecationFilter(): String? = deprecationFilter + @JsonProperty("deprecation_filter") + fun deprecationFilter(): Optional = Optional.ofNullable(deprecationFilter) /** * The external customer ID of the customer to which this backfill is scoped. Omitting this * field will scope the backfill to all customers. */ - @JsonProperty("external_customer_id") fun externalCustomerId(): String? = externalCustomerId + @JsonProperty("external_customer_id") + fun externalCustomerId(): Optional = Optional.ofNullable(externalCustomerId) /** * If true, replaces all existing events in the timeframe with the newly ingested events. If * false, adds the newly ingested events to the existing events. */ @JsonProperty("replace_existing_events") - fun replaceExistingEvents(): Boolean? = replaceExistingEvents + fun replaceExistingEvents(): Optional = Optional.ofNullable(replaceExistingEvents) @JsonAnyGetter @ExcludeMissing @@ -145,24 +151,22 @@ constructor( @JvmSynthetic internal fun from(eventBackfillCreateBody: EventBackfillCreateBody) = apply { - this.timeframeEnd = eventBackfillCreateBody.timeframeEnd - this.timeframeStart = eventBackfillCreateBody.timeframeStart - this.closeTime = eventBackfillCreateBody.closeTime - this.customerId = eventBackfillCreateBody.customerId - this.deprecationFilter = eventBackfillCreateBody.deprecationFilter - this.externalCustomerId = eventBackfillCreateBody.externalCustomerId - this.replaceExistingEvents = eventBackfillCreateBody.replaceExistingEvents - additionalProperties(eventBackfillCreateBody.additionalProperties) + timeframeEnd = eventBackfillCreateBody.timeframeEnd + timeframeStart = eventBackfillCreateBody.timeframeStart + closeTime = eventBackfillCreateBody.closeTime + customerId = eventBackfillCreateBody.customerId + deprecationFilter = eventBackfillCreateBody.deprecationFilter + externalCustomerId = eventBackfillCreateBody.externalCustomerId + replaceExistingEvents = eventBackfillCreateBody.replaceExistingEvents + additionalProperties = eventBackfillCreateBody.additionalProperties.toMutableMap() } /** The (exclusive) end of the usage timeframe affected by this backfill. */ - @JsonProperty("timeframe_end") fun timeframeEnd(timeframeEnd: OffsetDateTime) = apply { this.timeframeEnd = timeframeEnd } /** The (inclusive) start of the usage timeframe affected by this backfill. */ - @JsonProperty("timeframe_start") fun timeframeStart(timeframeStart: OffsetDateTime) = apply { this.timeframeStart = timeframeStart } @@ -172,14 +176,12 @@ constructor( * will automatically begin reflecting throughout Orb at the close time. If not * specified, it will default to 1 day after the creation of the backfill. */ - @JsonProperty("close_time") fun closeTime(closeTime: OffsetDateTime) = apply { this.closeTime = closeTime } /** * The Orb-generated ID of the customer to which this backfill is scoped. Omitting this * field will scope the backfill to all customers. */ - @JsonProperty("customer_id") fun customerId(customerId: String) = apply { this.customerId = customerId } /** @@ -187,7 +189,6 @@ constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties) * used to filter the set of events to deprecate */ - @JsonProperty("deprecation_filter") fun deprecationFilter(deprecationFilter: String) = apply { this.deprecationFilter = deprecationFilter } @@ -196,7 +197,6 @@ constructor( * The external customer ID of the customer to which this backfill is scoped. Omitting * this field will scope the backfill to all customers. */ - @JsonProperty("external_customer_id") fun externalCustomerId(externalCustomerId: String) = apply { this.externalCustomerId = externalCustomerId } @@ -205,25 +205,29 @@ constructor( * If true, replaces all existing events in the timeframe with the newly ingested * events. If false, adds the newly ingested events to the existing events. */ - @JsonProperty("replace_existing_events") fun replaceExistingEvents(replaceExistingEvents: Boolean) = apply { this.replaceExistingEvents = replaceExistingEvents } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventBackfillCreateBody = EventBackfillCreateBody( checkNotNull(timeframeEnd) { "`timeframeEnd` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCreateResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCreateResponse.kt index 1e7f7a63..c626af48 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCreateResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillCreateResponse.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -23,25 +23,41 @@ import java.util.Optional * A backfill represents an update to historical usage data, adding or replacing events in a * timeframe. */ -@JsonDeserialize(builder = EventBackfillCreateResponse.Builder::class) @NoAutoDetect class EventBackfillCreateResponse +@JsonCreator private constructor( - private val id: JsonField, - private val status: JsonField, - private val createdAt: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val eventsIngested: JsonField, - private val closeTime: JsonField, - private val revertedAt: JsonField, - private val customerId: JsonField, - private val deprecationFilter: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonProperty("events_ingested") + @ExcludeMissing + private val eventsIngested: JsonField = JsonMissing.of(), + @JsonProperty("close_time") + @ExcludeMissing + private val closeTime: JsonField = JsonMissing.of(), + @JsonProperty("reverted_at") + @ExcludeMissing + private val revertedAt: JsonField = JsonMissing.of(), + @JsonProperty("customer_id") + @ExcludeMissing + private val customerId: JsonField = JsonMissing.of(), + @JsonProperty("deprecation_filter") + @ExcludeMissing + private val deprecationFilter: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** The status of the backfill. */ @@ -119,6 +135,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventBackfillCreateResponse = apply { if (!validated) { id() @@ -158,50 +176,42 @@ private constructor( @JvmSynthetic internal fun from(eventBackfillCreateResponse: EventBackfillCreateResponse) = apply { - this.id = eventBackfillCreateResponse.id - this.status = eventBackfillCreateResponse.status - this.createdAt = eventBackfillCreateResponse.createdAt - this.timeframeStart = eventBackfillCreateResponse.timeframeStart - this.timeframeEnd = eventBackfillCreateResponse.timeframeEnd - this.eventsIngested = eventBackfillCreateResponse.eventsIngested - this.closeTime = eventBackfillCreateResponse.closeTime - this.revertedAt = eventBackfillCreateResponse.revertedAt - this.customerId = eventBackfillCreateResponse.customerId - this.deprecationFilter = eventBackfillCreateResponse.deprecationFilter - additionalProperties(eventBackfillCreateResponse.additionalProperties) + id = eventBackfillCreateResponse.id + status = eventBackfillCreateResponse.status + createdAt = eventBackfillCreateResponse.createdAt + timeframeStart = eventBackfillCreateResponse.timeframeStart + timeframeEnd = eventBackfillCreateResponse.timeframeEnd + eventsIngested = eventBackfillCreateResponse.eventsIngested + closeTime = eventBackfillCreateResponse.closeTime + revertedAt = eventBackfillCreateResponse.revertedAt + customerId = eventBackfillCreateResponse.customerId + deprecationFilter = eventBackfillCreateResponse.deprecationFilter + additionalProperties = eventBackfillCreateResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The status of the backfill. */ fun status(status: Status) = status(JsonField.of(status)) /** The status of the backfill. */ - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } @@ -210,8 +220,6 @@ private constructor( fun eventsIngested(eventsIngested: Long) = eventsIngested(JsonField.of(eventsIngested)) /** The number of events ingested in this backfill. */ - @JsonProperty("events_ingested") - @ExcludeMissing fun eventsIngested(eventsIngested: JsonField) = apply { this.eventsIngested = eventsIngested } @@ -226,16 +234,12 @@ private constructor( * If in the future, the time at which the backfill will automatically close. If in the * past, the time at which the backfill was closed. */ - @JsonProperty("close_time") - @ExcludeMissing fun closeTime(closeTime: JsonField) = apply { this.closeTime = closeTime } /** The time at which this backfill was reverted. */ fun revertedAt(revertedAt: OffsetDateTime) = revertedAt(JsonField.of(revertedAt)) /** The time at which this backfill was reverted. */ - @JsonProperty("reverted_at") - @ExcludeMissing fun revertedAt(revertedAt: JsonField) = apply { this.revertedAt = revertedAt } @@ -250,8 +254,6 @@ private constructor( * The Orb-generated ID of the customer to which this backfill is scoped. If `null`, this * backfill is scoped to all customers. */ - @JsonProperty("customer_id") - @ExcludeMissing fun customerId(customerId: JsonField) = apply { this.customerId = customerId } /** @@ -267,26 +269,29 @@ private constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties) used to * filter the set of events to deprecate */ - @JsonProperty("deprecation_filter") - @ExcludeMissing fun deprecationFilter(deprecationFilter: JsonField) = apply { this.deprecationFilter = deprecationFilter } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventBackfillCreateResponse = EventBackfillCreateResponse( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillFetchResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillFetchResponse.kt index c95d7940..806c9af5 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillFetchResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillFetchResponse.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -23,25 +23,41 @@ import java.util.Optional * A backfill represents an update to historical usage data, adding or replacing events in a * timeframe. */ -@JsonDeserialize(builder = EventBackfillFetchResponse.Builder::class) @NoAutoDetect class EventBackfillFetchResponse +@JsonCreator private constructor( - private val id: JsonField, - private val status: JsonField, - private val createdAt: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val eventsIngested: JsonField, - private val closeTime: JsonField, - private val revertedAt: JsonField, - private val customerId: JsonField, - private val deprecationFilter: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonProperty("events_ingested") + @ExcludeMissing + private val eventsIngested: JsonField = JsonMissing.of(), + @JsonProperty("close_time") + @ExcludeMissing + private val closeTime: JsonField = JsonMissing.of(), + @JsonProperty("reverted_at") + @ExcludeMissing + private val revertedAt: JsonField = JsonMissing.of(), + @JsonProperty("customer_id") + @ExcludeMissing + private val customerId: JsonField = JsonMissing.of(), + @JsonProperty("deprecation_filter") + @ExcludeMissing + private val deprecationFilter: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** The status of the backfill. */ @@ -119,6 +135,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventBackfillFetchResponse = apply { if (!validated) { id() @@ -158,50 +176,42 @@ private constructor( @JvmSynthetic internal fun from(eventBackfillFetchResponse: EventBackfillFetchResponse) = apply { - this.id = eventBackfillFetchResponse.id - this.status = eventBackfillFetchResponse.status - this.createdAt = eventBackfillFetchResponse.createdAt - this.timeframeStart = eventBackfillFetchResponse.timeframeStart - this.timeframeEnd = eventBackfillFetchResponse.timeframeEnd - this.eventsIngested = eventBackfillFetchResponse.eventsIngested - this.closeTime = eventBackfillFetchResponse.closeTime - this.revertedAt = eventBackfillFetchResponse.revertedAt - this.customerId = eventBackfillFetchResponse.customerId - this.deprecationFilter = eventBackfillFetchResponse.deprecationFilter - additionalProperties(eventBackfillFetchResponse.additionalProperties) + id = eventBackfillFetchResponse.id + status = eventBackfillFetchResponse.status + createdAt = eventBackfillFetchResponse.createdAt + timeframeStart = eventBackfillFetchResponse.timeframeStart + timeframeEnd = eventBackfillFetchResponse.timeframeEnd + eventsIngested = eventBackfillFetchResponse.eventsIngested + closeTime = eventBackfillFetchResponse.closeTime + revertedAt = eventBackfillFetchResponse.revertedAt + customerId = eventBackfillFetchResponse.customerId + deprecationFilter = eventBackfillFetchResponse.deprecationFilter + additionalProperties = eventBackfillFetchResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The status of the backfill. */ fun status(status: Status) = status(JsonField.of(status)) /** The status of the backfill. */ - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } @@ -210,8 +220,6 @@ private constructor( fun eventsIngested(eventsIngested: Long) = eventsIngested(JsonField.of(eventsIngested)) /** The number of events ingested in this backfill. */ - @JsonProperty("events_ingested") - @ExcludeMissing fun eventsIngested(eventsIngested: JsonField) = apply { this.eventsIngested = eventsIngested } @@ -226,16 +234,12 @@ private constructor( * If in the future, the time at which the backfill will automatically close. If in the * past, the time at which the backfill was closed. */ - @JsonProperty("close_time") - @ExcludeMissing fun closeTime(closeTime: JsonField) = apply { this.closeTime = closeTime } /** The time at which this backfill was reverted. */ fun revertedAt(revertedAt: OffsetDateTime) = revertedAt(JsonField.of(revertedAt)) /** The time at which this backfill was reverted. */ - @JsonProperty("reverted_at") - @ExcludeMissing fun revertedAt(revertedAt: JsonField) = apply { this.revertedAt = revertedAt } @@ -250,8 +254,6 @@ private constructor( * The Orb-generated ID of the customer to which this backfill is scoped. If `null`, this * backfill is scoped to all customers. */ - @JsonProperty("customer_id") - @ExcludeMissing fun customerId(customerId: JsonField) = apply { this.customerId = customerId } /** @@ -267,26 +269,29 @@ private constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties) used to * filter the set of events to deprecate */ - @JsonProperty("deprecation_filter") - @ExcludeMissing fun deprecationFilter(deprecationFilter: JsonField) = apply { this.deprecationFilter = deprecationFilter } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventBackfillFetchResponse = EventBackfillFetchResponse( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListPage.kt index 332df10a..018e8e92 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.events.BackfillService import java.util.Objects @@ -86,13 +87,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -157,18 +161,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListPageAsync.kt index 0e9d6105..daad53a1 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.events.BackfillServiceAsync import java.util.Objects @@ -89,13 +90,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -160,18 +164,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListResponse.kt index 36e37146..5bbb12af 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillListResponse.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -23,25 +23,41 @@ import java.util.Optional * A backfill represents an update to historical usage data, adding or replacing events in a * timeframe. */ -@JsonDeserialize(builder = EventBackfillListResponse.Builder::class) @NoAutoDetect class EventBackfillListResponse +@JsonCreator private constructor( - private val id: JsonField, - private val status: JsonField, - private val createdAt: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val eventsIngested: JsonField, - private val closeTime: JsonField, - private val revertedAt: JsonField, - private val customerId: JsonField, - private val deprecationFilter: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonProperty("events_ingested") + @ExcludeMissing + private val eventsIngested: JsonField = JsonMissing.of(), + @JsonProperty("close_time") + @ExcludeMissing + private val closeTime: JsonField = JsonMissing.of(), + @JsonProperty("reverted_at") + @ExcludeMissing + private val revertedAt: JsonField = JsonMissing.of(), + @JsonProperty("customer_id") + @ExcludeMissing + private val customerId: JsonField = JsonMissing.of(), + @JsonProperty("deprecation_filter") + @ExcludeMissing + private val deprecationFilter: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** The status of the backfill. */ @@ -119,6 +135,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventBackfillListResponse = apply { if (!validated) { id() @@ -158,50 +176,42 @@ private constructor( @JvmSynthetic internal fun from(eventBackfillListResponse: EventBackfillListResponse) = apply { - this.id = eventBackfillListResponse.id - this.status = eventBackfillListResponse.status - this.createdAt = eventBackfillListResponse.createdAt - this.timeframeStart = eventBackfillListResponse.timeframeStart - this.timeframeEnd = eventBackfillListResponse.timeframeEnd - this.eventsIngested = eventBackfillListResponse.eventsIngested - this.closeTime = eventBackfillListResponse.closeTime - this.revertedAt = eventBackfillListResponse.revertedAt - this.customerId = eventBackfillListResponse.customerId - this.deprecationFilter = eventBackfillListResponse.deprecationFilter - additionalProperties(eventBackfillListResponse.additionalProperties) + id = eventBackfillListResponse.id + status = eventBackfillListResponse.status + createdAt = eventBackfillListResponse.createdAt + timeframeStart = eventBackfillListResponse.timeframeStart + timeframeEnd = eventBackfillListResponse.timeframeEnd + eventsIngested = eventBackfillListResponse.eventsIngested + closeTime = eventBackfillListResponse.closeTime + revertedAt = eventBackfillListResponse.revertedAt + customerId = eventBackfillListResponse.customerId + deprecationFilter = eventBackfillListResponse.deprecationFilter + additionalProperties = eventBackfillListResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The status of the backfill. */ fun status(status: Status) = status(JsonField.of(status)) /** The status of the backfill. */ - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } @@ -210,8 +220,6 @@ private constructor( fun eventsIngested(eventsIngested: Long) = eventsIngested(JsonField.of(eventsIngested)) /** The number of events ingested in this backfill. */ - @JsonProperty("events_ingested") - @ExcludeMissing fun eventsIngested(eventsIngested: JsonField) = apply { this.eventsIngested = eventsIngested } @@ -226,16 +234,12 @@ private constructor( * If in the future, the time at which the backfill will automatically close. If in the * past, the time at which the backfill was closed. */ - @JsonProperty("close_time") - @ExcludeMissing fun closeTime(closeTime: JsonField) = apply { this.closeTime = closeTime } /** The time at which this backfill was reverted. */ fun revertedAt(revertedAt: OffsetDateTime) = revertedAt(JsonField.of(revertedAt)) /** The time at which this backfill was reverted. */ - @JsonProperty("reverted_at") - @ExcludeMissing fun revertedAt(revertedAt: JsonField) = apply { this.revertedAt = revertedAt } @@ -250,8 +254,6 @@ private constructor( * The Orb-generated ID of the customer to which this backfill is scoped. If `null`, this * backfill is scoped to all customers. */ - @JsonProperty("customer_id") - @ExcludeMissing fun customerId(customerId: JsonField) = apply { this.customerId = customerId } /** @@ -267,26 +269,29 @@ private constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties) used to * filter the set of events to deprecate */ - @JsonProperty("deprecation_filter") - @ExcludeMissing fun deprecationFilter(deprecationFilter: JsonField) = apply { this.deprecationFilter = deprecationFilter } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventBackfillListResponse = EventBackfillListResponse( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillRevertResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillRevertResponse.kt index 5f3fc3b4..79a8cc25 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillRevertResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventBackfillRevertResponse.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -23,25 +23,41 @@ import java.util.Optional * A backfill represents an update to historical usage data, adding or replacing events in a * timeframe. */ -@JsonDeserialize(builder = EventBackfillRevertResponse.Builder::class) @NoAutoDetect class EventBackfillRevertResponse +@JsonCreator private constructor( - private val id: JsonField, - private val status: JsonField, - private val createdAt: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val eventsIngested: JsonField, - private val closeTime: JsonField, - private val revertedAt: JsonField, - private val customerId: JsonField, - private val deprecationFilter: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonProperty("events_ingested") + @ExcludeMissing + private val eventsIngested: JsonField = JsonMissing.of(), + @JsonProperty("close_time") + @ExcludeMissing + private val closeTime: JsonField = JsonMissing.of(), + @JsonProperty("reverted_at") + @ExcludeMissing + private val revertedAt: JsonField = JsonMissing.of(), + @JsonProperty("customer_id") + @ExcludeMissing + private val customerId: JsonField = JsonMissing.of(), + @JsonProperty("deprecation_filter") + @ExcludeMissing + private val deprecationFilter: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** The status of the backfill. */ @@ -119,6 +135,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventBackfillRevertResponse = apply { if (!validated) { id() @@ -158,50 +176,42 @@ private constructor( @JvmSynthetic internal fun from(eventBackfillRevertResponse: EventBackfillRevertResponse) = apply { - this.id = eventBackfillRevertResponse.id - this.status = eventBackfillRevertResponse.status - this.createdAt = eventBackfillRevertResponse.createdAt - this.timeframeStart = eventBackfillRevertResponse.timeframeStart - this.timeframeEnd = eventBackfillRevertResponse.timeframeEnd - this.eventsIngested = eventBackfillRevertResponse.eventsIngested - this.closeTime = eventBackfillRevertResponse.closeTime - this.revertedAt = eventBackfillRevertResponse.revertedAt - this.customerId = eventBackfillRevertResponse.customerId - this.deprecationFilter = eventBackfillRevertResponse.deprecationFilter - additionalProperties(eventBackfillRevertResponse.additionalProperties) + id = eventBackfillRevertResponse.id + status = eventBackfillRevertResponse.status + createdAt = eventBackfillRevertResponse.createdAt + timeframeStart = eventBackfillRevertResponse.timeframeStart + timeframeEnd = eventBackfillRevertResponse.timeframeEnd + eventsIngested = eventBackfillRevertResponse.eventsIngested + closeTime = eventBackfillRevertResponse.closeTime + revertedAt = eventBackfillRevertResponse.revertedAt + customerId = eventBackfillRevertResponse.customerId + deprecationFilter = eventBackfillRevertResponse.deprecationFilter + additionalProperties = eventBackfillRevertResponse.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The status of the backfill. */ fun status(status: Status) = status(JsonField.of(status)) /** The status of the backfill. */ - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } @@ -210,8 +220,6 @@ private constructor( fun eventsIngested(eventsIngested: Long) = eventsIngested(JsonField.of(eventsIngested)) /** The number of events ingested in this backfill. */ - @JsonProperty("events_ingested") - @ExcludeMissing fun eventsIngested(eventsIngested: JsonField) = apply { this.eventsIngested = eventsIngested } @@ -226,16 +234,12 @@ private constructor( * If in the future, the time at which the backfill will automatically close. If in the * past, the time at which the backfill was closed. */ - @JsonProperty("close_time") - @ExcludeMissing fun closeTime(closeTime: JsonField) = apply { this.closeTime = closeTime } /** The time at which this backfill was reverted. */ fun revertedAt(revertedAt: OffsetDateTime) = revertedAt(JsonField.of(revertedAt)) /** The time at which this backfill was reverted. */ - @JsonProperty("reverted_at") - @ExcludeMissing fun revertedAt(revertedAt: JsonField) = apply { this.revertedAt = revertedAt } @@ -250,8 +254,6 @@ private constructor( * The Orb-generated ID of the customer to which this backfill is scoped. If `null`, this * backfill is scoped to all customers. */ - @JsonProperty("customer_id") - @ExcludeMissing fun customerId(customerId: JsonField) = apply { this.customerId = customerId } /** @@ -267,26 +269,29 @@ private constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties) used to * filter the set of events to deprecate */ - @JsonProperty("deprecation_filter") - @ExcludeMissing fun deprecationFilter(deprecationFilter: JsonField) = apply { this.deprecationFilter = deprecationFilter } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventBackfillRevertResponse = EventBackfillRevertResponse( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventDeprecateResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventDeprecateResponse.kt index d6627a98..79456aaa 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventDeprecateResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventDeprecateResponse.kt @@ -4,26 +4,27 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects -@JsonDeserialize(builder = EventDeprecateResponse.Builder::class) @NoAutoDetect class EventDeprecateResponse +@JsonCreator private constructor( - private val deprecated: JsonField, - private val additionalProperties: Map, + @JsonProperty("deprecated") + @ExcludeMissing + private val deprecated: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** event_id of the deprecated event, if successfully updated */ fun deprecated(): String = deprecated.getRequired("deprecated") @@ -34,6 +35,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventDeprecateResponse = apply { if (!validated) { deprecated() @@ -55,32 +58,35 @@ private constructor( @JvmSynthetic internal fun from(eventDeprecateResponse: EventDeprecateResponse) = apply { - this.deprecated = eventDeprecateResponse.deprecated - additionalProperties(eventDeprecateResponse.additionalProperties) + deprecated = eventDeprecateResponse.deprecated + additionalProperties = eventDeprecateResponse.additionalProperties.toMutableMap() } /** event_id of the deprecated event, if successfully updated */ fun deprecated(deprecated: String) = deprecated(JsonField.of(deprecated)) /** event_id of the deprecated event, if successfully updated */ - @JsonProperty("deprecated") - @ExcludeMissing fun deprecated(deprecated: JsonField) = apply { this.deprecated = deprecated } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventDeprecateResponse = EventDeprecateResponse(deprecated, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventIngestParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventIngestParams.kt index afe7b9c5..6610c6d5 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventIngestParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventIngestParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects @@ -54,15 +55,16 @@ constructor( return queryParams.build() } - @JsonDeserialize(builder = EventIngestBody.Builder::class) @NoAutoDetect class EventIngestBody + @JsonCreator internal constructor( - private val events: List?, - private val additionalProperties: Map, + @JsonProperty("events") private val events: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("events") fun events(): List? = events + @JsonProperty("events") fun events(): List = events @JsonAnyGetter @ExcludeMissing @@ -82,26 +84,31 @@ constructor( @JvmSynthetic internal fun from(eventIngestBody: EventIngestBody) = apply { - this.events = eventIngestBody.events - additionalProperties(eventIngestBody.additionalProperties) + events = eventIngestBody.events.toMutableList() + additionalProperties = eventIngestBody.additionalProperties.toMutableMap() } - @JsonProperty("events") fun events(events: List) = apply { this.events = events } + fun events(events: List) = apply { this.events = events } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventIngestBody = EventIngestBody( checkNotNull(events) { "`events` is required but was not set" }.toImmutable(), @@ -301,47 +308,50 @@ constructor( ) } - @JsonDeserialize(builder = Event.Builder::class) @NoAutoDetect class Event + @JsonCreator private constructor( - private val customerId: String?, - private val externalCustomerId: String?, - private val eventName: String?, - private val timestamp: OffsetDateTime?, - private val properties: JsonValue?, - private val idempotencyKey: String?, - private val additionalProperties: Map, + @JsonProperty("customer_id") private val customerId: String?, + @JsonProperty("external_customer_id") private val externalCustomerId: String?, + @JsonProperty("event_name") private val eventName: String, + @JsonProperty("timestamp") private val timestamp: OffsetDateTime, + @JsonProperty("properties") private val properties: JsonValue, + @JsonProperty("idempotency_key") private val idempotencyKey: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The Orb Customer identifier */ - @JsonProperty("customer_id") fun customerId(): String? = customerId + @JsonProperty("customer_id") + fun customerId(): Optional = Optional.ofNullable(customerId) /** An alias for the Orb customer, whose mapping is specified when creating the customer */ - @JsonProperty("external_customer_id") fun externalCustomerId(): String? = externalCustomerId + @JsonProperty("external_customer_id") + fun externalCustomerId(): Optional = Optional.ofNullable(externalCustomerId) /** A name to meaningfully identify the action or event type. */ - @JsonProperty("event_name") fun eventName(): String? = eventName + @JsonProperty("event_name") fun eventName(): String = eventName /** * An ISO 8601 format date with no timezone offset (i.e. UTC). This should represent the * time that usage was recorded, and is particularly important to attribute usage to a given * billing period. */ - @JsonProperty("timestamp") fun timestamp(): OffsetDateTime? = timestamp + @JsonProperty("timestamp") fun timestamp(): OffsetDateTime = timestamp /** * A dictionary of custom properties. Values in this dictionary must be numeric, boolean, or * strings. Nested dictionaries are disallowed. */ - @JsonProperty("properties") fun properties(): JsonValue? = properties + @JsonProperty("properties") fun properties(): JsonValue = properties /** * A unique value, generated by the client, that is used to de-duplicate events. Exactly one * event with a given idempotency key will be ingested, which allows for safe request * retries. */ - @JsonProperty("idempotency_key") fun idempotencyKey(): String? = idempotencyKey + @JsonProperty("idempotency_key") fun idempotencyKey(): String = idempotencyKey @JsonAnyGetter @ExcludeMissing @@ -366,29 +376,26 @@ constructor( @JvmSynthetic internal fun from(event: Event) = apply { - this.customerId = event.customerId - this.externalCustomerId = event.externalCustomerId - this.eventName = event.eventName - this.timestamp = event.timestamp - this.properties = event.properties - this.idempotencyKey = event.idempotencyKey - additionalProperties(event.additionalProperties) + customerId = event.customerId + externalCustomerId = event.externalCustomerId + eventName = event.eventName + timestamp = event.timestamp + properties = event.properties + idempotencyKey = event.idempotencyKey + additionalProperties = event.additionalProperties.toMutableMap() } /** The Orb Customer identifier */ - @JsonProperty("customer_id") fun customerId(customerId: String) = apply { this.customerId = customerId } /** * An alias for the Orb customer, whose mapping is specified when creating the customer */ - @JsonProperty("external_customer_id") fun externalCustomerId(externalCustomerId: String) = apply { this.externalCustomerId = externalCustomerId } /** A name to meaningfully identify the action or event type. */ - @JsonProperty("event_name") fun eventName(eventName: String) = apply { this.eventName = eventName } /** @@ -396,14 +403,12 @@ constructor( * time that usage was recorded, and is particularly important to attribute usage to a * given billing period. */ - @JsonProperty("timestamp") fun timestamp(timestamp: OffsetDateTime) = apply { this.timestamp = timestamp } /** * A dictionary of custom properties. Values in this dictionary must be numeric, * boolean, or strings. Nested dictionaries are disallowed. */ - @JsonProperty("properties") fun properties(properties: JsonValue) = apply { this.properties = properties } /** @@ -411,25 +416,29 @@ constructor( * one event with a given idempotency key will be ingested, which allows for safe * request retries. */ - @JsonProperty("idempotency_key") fun idempotencyKey(idempotencyKey: String) = apply { this.idempotencyKey = idempotencyKey } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Event = Event( customerId, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventIngestResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventIngestResponse.kt index 98a0d3be..dd16b94a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventIngestResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventIngestResponse.kt @@ -4,28 +4,29 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = EventIngestResponse.Builder::class) @NoAutoDetect class EventIngestResponse +@JsonCreator private constructor( - private val debug: JsonField, - private val validationFailed: JsonField>, - private val additionalProperties: Map, + @JsonProperty("debug") @ExcludeMissing private val debug: JsonField = JsonMissing.of(), + @JsonProperty("validation_failed") + @ExcludeMissing + private val validationFailed: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * Optional debug information (only present when debug=true is passed to the endpoint). Contains * ingested and duplicate event idempotency keys. @@ -55,6 +56,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventIngestResponse = apply { if (!validated) { debug().map { it.validate() } @@ -78,9 +81,9 @@ private constructor( @JvmSynthetic internal fun from(eventIngestResponse: EventIngestResponse) = apply { - this.debug = eventIngestResponse.debug - this.validationFailed = eventIngestResponse.validationFailed - additionalProperties(eventIngestResponse.additionalProperties) + debug = eventIngestResponse.debug + validationFailed = eventIngestResponse.validationFailed + additionalProperties = eventIngestResponse.additionalProperties.toMutableMap() } /** @@ -93,8 +96,6 @@ private constructor( * Optional debug information (only present when debug=true is passed to the endpoint). * Contains ingested and duplicate event idempotency keys. */ - @JsonProperty("debug") - @ExcludeMissing fun debug(debug: JsonField) = apply { this.debug = debug } /** @@ -108,26 +109,29 @@ private constructor( * Contains all failing validation events. In the case of a 200, this array will always be * empty. This field will always be present. */ - @JsonProperty("validation_failed") - @ExcludeMissing fun validationFailed(validationFailed: JsonField>) = apply { this.validationFailed = validationFailed } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventIngestResponse = EventIngestResponse( debug, @@ -136,17 +140,20 @@ private constructor( ) } - @JsonDeserialize(builder = ValidationFailed.Builder::class) @NoAutoDetect class ValidationFailed + @JsonCreator private constructor( - private val idempotencyKey: JsonField, - private val validationErrors: JsonField>, - private val additionalProperties: Map, + @JsonProperty("idempotency_key") + @ExcludeMissing + private val idempotencyKey: JsonField = JsonMissing.of(), + @JsonProperty("validation_errors") + @ExcludeMissing + private val validationErrors: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The passed idempotency_key corresponding to the validation_errors */ fun idempotencyKey(): String = idempotencyKey.getRequired("idempotency_key") @@ -165,6 +172,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ValidationFailed = apply { if (!validated) { idempotencyKey() @@ -188,9 +197,9 @@ private constructor( @JvmSynthetic internal fun from(validationFailed: ValidationFailed) = apply { - this.idempotencyKey = validationFailed.idempotencyKey - this.validationErrors = validationFailed.validationErrors - additionalProperties(validationFailed.additionalProperties) + idempotencyKey = validationFailed.idempotencyKey + validationErrors = validationFailed.validationErrors + additionalProperties = validationFailed.additionalProperties.toMutableMap() } /** The passed idempotency_key corresponding to the validation_errors */ @@ -198,8 +207,6 @@ private constructor( idempotencyKey(JsonField.of(idempotencyKey)) /** The passed idempotency_key corresponding to the validation_errors */ - @JsonProperty("idempotency_key") - @ExcludeMissing fun idempotencyKey(idempotencyKey: JsonField) = apply { this.idempotencyKey = idempotencyKey } @@ -213,26 +220,29 @@ private constructor( /** * An array of strings corresponding to validation failures for this idempotency_key. */ - @JsonProperty("validation_errors") - @ExcludeMissing fun validationErrors(validationErrors: JsonField>) = apply { this.validationErrors = validationErrors } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ValidationFailed = ValidationFailed( idempotencyKey, @@ -263,17 +273,20 @@ private constructor( * Optional debug information (only present when debug=true is passed to the endpoint). Contains * ingested and duplicate event idempotency keys. */ - @JsonDeserialize(builder = Debug.Builder::class) @NoAutoDetect class Debug + @JsonCreator private constructor( - private val duplicate: JsonField>, - private val ingested: JsonField>, - private val additionalProperties: Map, + @JsonProperty("duplicate") + @ExcludeMissing + private val duplicate: JsonField> = JsonMissing.of(), + @JsonProperty("ingested") + @ExcludeMissing + private val ingested: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duplicate(): List = duplicate.getRequired("duplicate") fun ingested(): List = ingested.getRequired("ingested") @@ -286,6 +299,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Debug = apply { if (!validated) { duplicate() @@ -309,37 +324,38 @@ private constructor( @JvmSynthetic internal fun from(debug: Debug) = apply { - this.duplicate = debug.duplicate - this.ingested = debug.ingested - additionalProperties(debug.additionalProperties) + duplicate = debug.duplicate + ingested = debug.ingested + additionalProperties = debug.additionalProperties.toMutableMap() } fun duplicate(duplicate: List) = duplicate(JsonField.of(duplicate)) - @JsonProperty("duplicate") - @ExcludeMissing fun duplicate(duplicate: JsonField>) = apply { this.duplicate = duplicate } fun ingested(ingested: List) = ingested(JsonField.of(ingested)) - @JsonProperty("ingested") - @ExcludeMissing fun ingested(ingested: JsonField>) = apply { this.ingested = ingested } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Debug = Debug( duplicate.map { it.toImmutable() }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventSearchParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventSearchParams.kt index 9ac899fa..a1a42864 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventSearchParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventSearchParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects @@ -52,14 +53,15 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = EventSearchBody.Builder::class) @NoAutoDetect class EventSearchBody + @JsonCreator internal constructor( - private val eventIds: List?, - private val timeframeEnd: OffsetDateTime?, - private val timeframeStart: OffsetDateTime?, - private val additionalProperties: Map, + @JsonProperty("event_ids") private val eventIds: List, + @JsonProperty("timeframe_end") private val timeframeEnd: OffsetDateTime?, + @JsonProperty("timeframe_start") private val timeframeStart: OffsetDateTime?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -67,19 +69,21 @@ constructor( * idempotency_key that was originally used for ingestion, and this only supports events * that have not been amended. Values in this array will be treated case sensitively. */ - @JsonProperty("event_ids") fun eventIds(): List? = eventIds + @JsonProperty("event_ids") fun eventIds(): List = eventIds /** * The end of the timeframe, exclusive, in which to search events. If not specified, the * current time is used. */ - @JsonProperty("timeframe_end") fun timeframeEnd(): OffsetDateTime? = timeframeEnd + @JsonProperty("timeframe_end") + fun timeframeEnd(): Optional = Optional.ofNullable(timeframeEnd) /** * The start of the timeframe, inclusive, in which to search events. If not specified, the * one week ago is used. */ - @JsonProperty("timeframe_start") fun timeframeStart(): OffsetDateTime? = timeframeStart + @JsonProperty("timeframe_start") + fun timeframeStart(): Optional = Optional.ofNullable(timeframeStart) @JsonAnyGetter @ExcludeMissing @@ -101,10 +105,10 @@ constructor( @JvmSynthetic internal fun from(eventSearchBody: EventSearchBody) = apply { - this.eventIds = eventSearchBody.eventIds - this.timeframeEnd = eventSearchBody.timeframeEnd - this.timeframeStart = eventSearchBody.timeframeStart - additionalProperties(eventSearchBody.additionalProperties) + eventIds = eventSearchBody.eventIds.toMutableList() + timeframeEnd = eventSearchBody.timeframeEnd + timeframeStart = eventSearchBody.timeframeStart + additionalProperties = eventSearchBody.additionalProperties.toMutableMap() } /** @@ -112,14 +116,12 @@ constructor( * idempotency_key that was originally used for ingestion, and this only supports events * that have not been amended. Values in this array will be treated case sensitively. */ - @JsonProperty("event_ids") fun eventIds(eventIds: List) = apply { this.eventIds = eventIds } /** * The end of the timeframe, exclusive, in which to search events. If not specified, the * current time is used. */ - @JsonProperty("timeframe_end") fun timeframeEnd(timeframeEnd: OffsetDateTime) = apply { this.timeframeEnd = timeframeEnd } @@ -128,25 +130,29 @@ constructor( * The start of the timeframe, inclusive, in which to search events. If not specified, * the one week ago is used. */ - @JsonProperty("timeframe_start") fun timeframeStart(timeframeStart: OffsetDateTime) = apply { this.timeframeStart = timeframeStart } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventSearchBody = EventSearchBody( checkNotNull(eventIds) { "`eventIds` is required but was not set" } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventSearchResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventSearchResponse.kt index c0f5dc93..a1abec9b 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventSearchResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventSearchResponse.kt @@ -4,28 +4,29 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = EventSearchResponse.Builder::class) @NoAutoDetect class EventSearchResponse +@JsonCreator private constructor( - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun data(): List = data.getRequired("data") @JsonProperty("data") @ExcludeMissing fun _data() = data @@ -34,6 +35,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventSearchResponse = apply { if (!validated) { data().forEach { it.validate() } @@ -55,30 +58,33 @@ private constructor( @JvmSynthetic internal fun from(eventSearchResponse: EventSearchResponse) = apply { - this.data = eventSearchResponse.data - additionalProperties(eventSearchResponse.additionalProperties) + data = eventSearchResponse.data + additionalProperties = eventSearchResponse.additionalProperties.toMutableMap() } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventSearchResponse = EventSearchResponse(data.map { it.toImmutable() }, additionalProperties.toImmutable()) } @@ -88,22 +94,33 @@ private constructor( * been created for a customer. Events are the core of Orb's usage-based billing model, and are * used to calculate the usage charges for a given billing period. */ - @JsonDeserialize(builder = Data.Builder::class) @NoAutoDetect class Data + @JsonCreator private constructor( - private val id: JsonField, - private val customerId: JsonField, - private val externalCustomerId: JsonField, - private val eventName: JsonField, - private val properties: JsonValue, - private val timestamp: JsonField, - private val deprecated: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer_id") + @ExcludeMissing + private val customerId: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonProperty("event_name") + @ExcludeMissing + private val eventName: JsonField = JsonMissing.of(), + @JsonProperty("properties") + @ExcludeMissing + private val properties: JsonValue = JsonMissing.of(), + @JsonProperty("timestamp") + @ExcludeMissing + private val timestamp: JsonField = JsonMissing.of(), + @JsonProperty("deprecated") + @ExcludeMissing + private val deprecated: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * A unique value, generated by the client, that is used to de-duplicate events. Exactly one * event with a given idempotency key will be ingested, which allows for safe request @@ -170,6 +187,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Data = apply { if (!validated) { id() @@ -202,14 +221,14 @@ private constructor( @JvmSynthetic internal fun from(data: Data) = apply { - this.id = data.id - this.customerId = data.customerId - this.externalCustomerId = data.externalCustomerId - this.eventName = data.eventName - this.properties = data.properties - this.timestamp = data.timestamp - this.deprecated = data.deprecated - additionalProperties(data.additionalProperties) + id = data.id + customerId = data.customerId + externalCustomerId = data.externalCustomerId + eventName = data.eventName + properties = data.properties + timestamp = data.timestamp + deprecated = data.deprecated + additionalProperties = data.additionalProperties.toMutableMap() } /** @@ -224,16 +243,12 @@ private constructor( * one event with a given idempotency key will be ingested, which allows for safe * request retries. */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** The Orb Customer identifier */ fun customerId(customerId: String) = customerId(JsonField.of(customerId)) /** The Orb Customer identifier */ - @JsonProperty("customer_id") - @ExcludeMissing fun customerId(customerId: JsonField) = apply { this.customerId = customerId } /** @@ -245,8 +260,6 @@ private constructor( /** * An alias for the Orb customer, whose mapping is specified when creating the customer */ - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } @@ -255,16 +268,12 @@ private constructor( fun eventName(eventName: String) = eventName(JsonField.of(eventName)) /** A name to meaningfully identify the action or event type. */ - @JsonProperty("event_name") - @ExcludeMissing fun eventName(eventName: JsonField) = apply { this.eventName = eventName } /** * A dictionary of custom properties. Values in this dictionary must be numeric, * boolean, or strings. Nested dictionaries are disallowed. */ - @JsonProperty("properties") - @ExcludeMissing fun properties(properties: JsonValue) = apply { this.properties = properties } /** @@ -279,8 +288,6 @@ private constructor( * time that usage was recorded, and is particularly important to attribute usage to a * given billing period. */ - @JsonProperty("timestamp") - @ExcludeMissing fun timestamp(timestamp: JsonField) = apply { this.timestamp = timestamp } @@ -289,24 +296,27 @@ private constructor( fun deprecated(deprecated: Boolean) = deprecated(JsonField.of(deprecated)) /** A boolean indicating whether the event is currently deprecated. */ - @JsonProperty("deprecated") - @ExcludeMissing fun deprecated(deprecated: JsonField) = apply { this.deprecated = deprecated } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Data = Data( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventUpdateParams.kt index 01950c33..316c767e 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventUpdateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects @@ -70,39 +71,42 @@ constructor( } } - @JsonDeserialize(builder = EventUpdateBody.Builder::class) @NoAutoDetect class EventUpdateBody + @JsonCreator internal constructor( - private val eventName: String?, - private val properties: JsonValue?, - private val timestamp: OffsetDateTime?, - private val customerId: String?, - private val externalCustomerId: String?, - private val additionalProperties: Map, + @JsonProperty("event_name") private val eventName: String, + @JsonProperty("properties") private val properties: JsonValue, + @JsonProperty("timestamp") private val timestamp: OffsetDateTime, + @JsonProperty("customer_id") private val customerId: String?, + @JsonProperty("external_customer_id") private val externalCustomerId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** A name to meaningfully identify the action or event type. */ - @JsonProperty("event_name") fun eventName(): String? = eventName + @JsonProperty("event_name") fun eventName(): String = eventName /** * A dictionary of custom properties. Values in this dictionary must be numeric, boolean, or * strings. Nested dictionaries are disallowed. */ - @JsonProperty("properties") fun properties(): JsonValue? = properties + @JsonProperty("properties") fun properties(): JsonValue = properties /** * An ISO 8601 format date with no timezone offset (i.e. UTC). This should represent the * time that usage was recorded, and is particularly important to attribute usage to a given * billing period. */ - @JsonProperty("timestamp") fun timestamp(): OffsetDateTime? = timestamp + @JsonProperty("timestamp") fun timestamp(): OffsetDateTime = timestamp /** The Orb Customer identifier */ - @JsonProperty("customer_id") fun customerId(): String? = customerId + @JsonProperty("customer_id") + fun customerId(): Optional = Optional.ofNullable(customerId) /** An alias for the Orb customer, whose mapping is specified when creating the customer */ - @JsonProperty("external_customer_id") fun externalCustomerId(): String? = externalCustomerId + @JsonProperty("external_customer_id") + fun externalCustomerId(): Optional = Optional.ofNullable(externalCustomerId) @JsonAnyGetter @ExcludeMissing @@ -126,23 +130,21 @@ constructor( @JvmSynthetic internal fun from(eventUpdateBody: EventUpdateBody) = apply { - this.eventName = eventUpdateBody.eventName - this.properties = eventUpdateBody.properties - this.timestamp = eventUpdateBody.timestamp - this.customerId = eventUpdateBody.customerId - this.externalCustomerId = eventUpdateBody.externalCustomerId - additionalProperties(eventUpdateBody.additionalProperties) + eventName = eventUpdateBody.eventName + properties = eventUpdateBody.properties + timestamp = eventUpdateBody.timestamp + customerId = eventUpdateBody.customerId + externalCustomerId = eventUpdateBody.externalCustomerId + additionalProperties = eventUpdateBody.additionalProperties.toMutableMap() } /** A name to meaningfully identify the action or event type. */ - @JsonProperty("event_name") fun eventName(eventName: String) = apply { this.eventName = eventName } /** * A dictionary of custom properties. Values in this dictionary must be numeric, * boolean, or strings. Nested dictionaries are disallowed. */ - @JsonProperty("properties") fun properties(properties: JsonValue) = apply { this.properties = properties } /** @@ -150,35 +152,37 @@ constructor( * time that usage was recorded, and is particularly important to attribute usage to a * given billing period. */ - @JsonProperty("timestamp") fun timestamp(timestamp: OffsetDateTime) = apply { this.timestamp = timestamp } /** The Orb Customer identifier */ - @JsonProperty("customer_id") fun customerId(customerId: String) = apply { this.customerId = customerId } /** * An alias for the Orb customer, whose mapping is specified when creating the customer */ - @JsonProperty("external_customer_id") fun externalCustomerId(externalCustomerId: String) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventUpdateBody = EventUpdateBody( checkNotNull(eventName) { "`eventName` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventUpdateResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventUpdateResponse.kt index 7fc2154d..3d3e7c94 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventUpdateResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventUpdateResponse.kt @@ -4,26 +4,27 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects -@JsonDeserialize(builder = EventUpdateResponse.Builder::class) @NoAutoDetect class EventUpdateResponse +@JsonCreator private constructor( - private val amended: JsonField, - private val additionalProperties: Map, + @JsonProperty("amended") + @ExcludeMissing + private val amended: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** event_id of the amended event, if successfully ingested */ fun amended(): String = amended.getRequired("amended") @@ -34,6 +35,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventUpdateResponse = apply { if (!validated) { amended() @@ -55,32 +58,35 @@ private constructor( @JvmSynthetic internal fun from(eventUpdateResponse: EventUpdateResponse) = apply { - this.amended = eventUpdateResponse.amended - additionalProperties(eventUpdateResponse.additionalProperties) + amended = eventUpdateResponse.amended + additionalProperties = eventUpdateResponse.additionalProperties.toMutableMap() } /** event_id of the amended event, if successfully ingested */ fun amended(amended: String) = amended(JsonField.of(amended)) /** event_id of the amended event, if successfully ingested */ - @JsonProperty("amended") - @ExcludeMissing fun amended(amended: JsonField) = apply { this.amended = amended } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventUpdateResponse = EventUpdateResponse(amended, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventVolumes.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventVolumes.kt index 1c4a5973..5c26e4da 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/EventVolumes.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/EventVolumes.kt @@ -4,27 +4,28 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects -@JsonDeserialize(builder = EventVolumes.Builder::class) @NoAutoDetect class EventVolumes +@JsonCreator private constructor( - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun data(): List = data.getRequired("data") @JsonProperty("data") @ExcludeMissing fun _data() = data @@ -33,6 +34,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): EventVolumes = apply { if (!validated) { data().forEach { it.validate() } @@ -54,30 +57,33 @@ private constructor( @JvmSynthetic internal fun from(eventVolumes: EventVolumes) = apply { - this.data = eventVolumes.data - additionalProperties(eventVolumes.additionalProperties) + data = eventVolumes.data + additionalProperties = eventVolumes.additionalProperties.toMutableMap() } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EventVolumes = EventVolumes(data.map { it.toImmutable() }, additionalProperties.toImmutable()) } @@ -86,18 +92,23 @@ private constructor( * An EventVolume contains the event volume ingested in an hourly window. The timestamp used for * the aggregation is the `timestamp` datetime field on events. */ - @JsonDeserialize(builder = Data.Builder::class) @NoAutoDetect class Data + @JsonCreator private constructor( - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val count: JsonField, - private val additionalProperties: Map, + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonProperty("count") + @ExcludeMissing + private val count: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun timeframeStart(): OffsetDateTime = timeframeStart.getRequired("timeframe_start") fun timeframeEnd(): OffsetDateTime = timeframeEnd.getRequired("timeframe_end") @@ -116,6 +127,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Data = apply { if (!validated) { timeframeStart() @@ -141,17 +154,15 @@ private constructor( @JvmSynthetic internal fun from(data: Data) = apply { - this.timeframeStart = data.timeframeStart - this.timeframeEnd = data.timeframeEnd - this.count = data.count - additionalProperties(data.additionalProperties) + timeframeStart = data.timeframeStart + timeframeEnd = data.timeframeEnd + count = data.count + additionalProperties = data.additionalProperties.toMutableMap() } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } @@ -159,8 +170,6 @@ private constructor( fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } @@ -169,24 +178,27 @@ private constructor( fun count(count: Long) = count(JsonField.of(count)) /** The number of events ingested with a timestamp between the timeframe */ - @JsonProperty("count") - @ExcludeMissing fun count(count: JsonField) = apply { this.count = count } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Data = Data( timeframeStart, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Invoice.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Invoice.kt index 31631f65..32ed4df8 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Invoice.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Invoice.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -36,56 +37,129 @@ import kotlin.jvm.optionals.getOrNull * usage-based fees. They are generated at the end of a billing period, or as the result of an * action, such as a cancellation. */ -@JsonDeserialize(builder = Invoice.Builder::class) @NoAutoDetect class Invoice +@JsonCreator private constructor( - private val metadata: JsonField, - private val voidedAt: JsonField, - private val paidAt: JsonField, - private val issuedAt: JsonField, - private val scheduledIssueAt: JsonField, - private val autoCollection: JsonField, - private val issueFailedAt: JsonField, - private val syncFailedAt: JsonField, - private val paymentFailedAt: JsonField, - private val paymentStartedAt: JsonField, - private val amountDue: JsonField, - private val createdAt: JsonField, - private val currency: JsonField, - private val customer: JsonField, - private val discount: JsonValue, - private val discounts: JsonField>, - private val dueDate: JsonField, - private val id: JsonField, - private val invoicePdf: JsonField, - private val invoiceNumber: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val lineItems: JsonField>, - private val subscription: JsonField, - private val subtotal: JsonField, - private val total: JsonField, - private val customerBalanceTransactions: JsonField>, - private val status: JsonField, - private val invoiceSource: JsonField, - private val shippingAddress: JsonField, - private val billingAddress: JsonField, - private val hostedInvoiceUrl: JsonField, - private val willAutoIssue: JsonField, - private val eligibleToIssueAt: JsonField, - private val customerTaxId: JsonField, - private val memo: JsonField, - private val creditNotes: JsonField>, - private val paymentAttempts: JsonField>, - private val invoiceDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("voided_at") + @ExcludeMissing + private val voidedAt: JsonField = JsonMissing.of(), + @JsonProperty("paid_at") + @ExcludeMissing + private val paidAt: JsonField = JsonMissing.of(), + @JsonProperty("issued_at") + @ExcludeMissing + private val issuedAt: JsonField = JsonMissing.of(), + @JsonProperty("scheduled_issue_at") + @ExcludeMissing + private val scheduledIssueAt: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("issue_failed_at") + @ExcludeMissing + private val issueFailedAt: JsonField = JsonMissing.of(), + @JsonProperty("sync_failed_at") + @ExcludeMissing + private val syncFailedAt: JsonField = JsonMissing.of(), + @JsonProperty("payment_failed_at") + @ExcludeMissing + private val paymentFailedAt: JsonField = JsonMissing.of(), + @JsonProperty("payment_started_at") + @ExcludeMissing + private val paymentStartedAt: JsonField = JsonMissing.of(), + @JsonProperty("amount_due") + @ExcludeMissing + private val amountDue: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("discount") @ExcludeMissing private val discount: JsonValue = JsonMissing.of(), + @JsonProperty("discounts") + @ExcludeMissing + private val discounts: JsonField> = JsonMissing.of(), + @JsonProperty("due_date") + @ExcludeMissing + private val dueDate: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("invoice_pdf") + @ExcludeMissing + private val invoicePdf: JsonField = JsonMissing.of(), + @JsonProperty("invoice_number") + @ExcludeMissing + private val invoiceNumber: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("line_items") + @ExcludeMissing + private val lineItems: JsonField> = JsonMissing.of(), + @JsonProperty("subscription") + @ExcludeMissing + private val subscription: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("total") @ExcludeMissing private val total: JsonField = JsonMissing.of(), + @JsonProperty("customer_balance_transactions") + @ExcludeMissing + private val customerBalanceTransactions: JsonField> = + JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("invoice_source") + @ExcludeMissing + private val invoiceSource: JsonField = JsonMissing.of(), + @JsonProperty("shipping_address") + @ExcludeMissing + private val shippingAddress: JsonField = JsonMissing.of(), + @JsonProperty("billing_address") + @ExcludeMissing + private val billingAddress: JsonField = JsonMissing.of(), + @JsonProperty("hosted_invoice_url") + @ExcludeMissing + private val hostedInvoiceUrl: JsonField = JsonMissing.of(), + @JsonProperty("will_auto_issue") + @ExcludeMissing + private val willAutoIssue: JsonField = JsonMissing.of(), + @JsonProperty("eligible_to_issue_at") + @ExcludeMissing + private val eligibleToIssueAt: JsonField = JsonMissing.of(), + @JsonProperty("customer_tax_id") + @ExcludeMissing + private val customerTaxId: JsonField = JsonMissing.of(), + @JsonProperty("memo") @ExcludeMissing private val memo: JsonField = JsonMissing.of(), + @JsonProperty("credit_notes") + @ExcludeMissing + private val creditNotes: JsonField> = JsonMissing.of(), + @JsonProperty("payment_attempts") + @ExcludeMissing + private val paymentAttempts: JsonField> = JsonMissing.of(), + @JsonProperty("invoice_date") + @ExcludeMissing + private val invoiceDate: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -618,6 +692,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Invoice = apply { if (!validated) { metadata().validate() @@ -719,48 +795,48 @@ private constructor( @JvmSynthetic internal fun from(invoice: Invoice) = apply { - this.metadata = invoice.metadata - this.voidedAt = invoice.voidedAt - this.paidAt = invoice.paidAt - this.issuedAt = invoice.issuedAt - this.scheduledIssueAt = invoice.scheduledIssueAt - this.autoCollection = invoice.autoCollection - this.issueFailedAt = invoice.issueFailedAt - this.syncFailedAt = invoice.syncFailedAt - this.paymentFailedAt = invoice.paymentFailedAt - this.paymentStartedAt = invoice.paymentStartedAt - this.amountDue = invoice.amountDue - this.createdAt = invoice.createdAt - this.currency = invoice.currency - this.customer = invoice.customer - this.discount = invoice.discount - this.discounts = invoice.discounts - this.dueDate = invoice.dueDate - this.id = invoice.id - this.invoicePdf = invoice.invoicePdf - this.invoiceNumber = invoice.invoiceNumber - this.minimum = invoice.minimum - this.minimumAmount = invoice.minimumAmount - this.maximum = invoice.maximum - this.maximumAmount = invoice.maximumAmount - this.lineItems = invoice.lineItems - this.subscription = invoice.subscription - this.subtotal = invoice.subtotal - this.total = invoice.total - this.customerBalanceTransactions = invoice.customerBalanceTransactions - this.status = invoice.status - this.invoiceSource = invoice.invoiceSource - this.shippingAddress = invoice.shippingAddress - this.billingAddress = invoice.billingAddress - this.hostedInvoiceUrl = invoice.hostedInvoiceUrl - this.willAutoIssue = invoice.willAutoIssue - this.eligibleToIssueAt = invoice.eligibleToIssueAt - this.customerTaxId = invoice.customerTaxId - this.memo = invoice.memo - this.creditNotes = invoice.creditNotes - this.paymentAttempts = invoice.paymentAttempts - this.invoiceDate = invoice.invoiceDate - additionalProperties(invoice.additionalProperties) + metadata = invoice.metadata + voidedAt = invoice.voidedAt + paidAt = invoice.paidAt + issuedAt = invoice.issuedAt + scheduledIssueAt = invoice.scheduledIssueAt + autoCollection = invoice.autoCollection + issueFailedAt = invoice.issueFailedAt + syncFailedAt = invoice.syncFailedAt + paymentFailedAt = invoice.paymentFailedAt + paymentStartedAt = invoice.paymentStartedAt + amountDue = invoice.amountDue + createdAt = invoice.createdAt + currency = invoice.currency + customer = invoice.customer + discount = invoice.discount + discounts = invoice.discounts + dueDate = invoice.dueDate + id = invoice.id + invoicePdf = invoice.invoicePdf + invoiceNumber = invoice.invoiceNumber + minimum = invoice.minimum + minimumAmount = invoice.minimumAmount + maximum = invoice.maximum + maximumAmount = invoice.maximumAmount + lineItems = invoice.lineItems + subscription = invoice.subscription + subtotal = invoice.subtotal + total = invoice.total + customerBalanceTransactions = invoice.customerBalanceTransactions + status = invoice.status + invoiceSource = invoice.invoiceSource + shippingAddress = invoice.shippingAddress + billingAddress = invoice.billingAddress + hostedInvoiceUrl = invoice.hostedInvoiceUrl + willAutoIssue = invoice.willAutoIssue + eligibleToIssueAt = invoice.eligibleToIssueAt + customerTaxId = invoice.customerTaxId + memo = invoice.memo + creditNotes = invoice.creditNotes + paymentAttempts = invoice.paymentAttempts + invoiceDate = invoice.invoiceDate + additionalProperties = invoice.additionalProperties.toMutableMap() } /** @@ -775,8 +851,6 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } /** @@ -789,8 +863,6 @@ private constructor( * If the invoice has a status of `void`, this gives a timestamp when the invoice was * voided. */ - @JsonProperty("voided_at") - @ExcludeMissing fun voidedAt(voidedAt: JsonField) = apply { this.voidedAt = voidedAt } /** @@ -801,8 +873,6 @@ private constructor( /** * If the invoice has a status of `paid`, this gives a timestamp when the invoice was paid. */ - @JsonProperty("paid_at") - @ExcludeMissing fun paidAt(paidAt: JsonField) = apply { this.paidAt = paidAt } /** @@ -815,8 +885,6 @@ private constructor( * If the invoice has been issued, this will be the time it transitioned to `issued` (even * if it is now in a different state.) */ - @JsonProperty("issued_at") - @ExcludeMissing fun issuedAt(issuedAt: JsonField) = apply { this.issuedAt = issuedAt } /** @@ -830,8 +898,6 @@ private constructor( * If the invoice is in draft, this timestamp will reflect when the invoice is scheduled to * be issued. */ - @JsonProperty("scheduled_issue_at") - @ExcludeMissing fun scheduledIssueAt(scheduledIssueAt: JsonField) = apply { this.scheduledIssueAt = scheduledIssueAt } @@ -839,8 +905,6 @@ private constructor( fun autoCollection(autoCollection: AutoCollection) = autoCollection(JsonField.of(autoCollection)) - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -856,8 +920,6 @@ private constructor( * If the invoice failed to issue, this will be the last time it failed to issue (even if it * is now in a different state.) */ - @JsonProperty("issue_failed_at") - @ExcludeMissing fun issueFailedAt(issueFailedAt: JsonField) = apply { this.issueFailedAt = issueFailedAt } @@ -872,8 +934,6 @@ private constructor( * If the invoice failed to sync, this will be the last time an external invoicing provider * sync was attempted. This field will always be `null` for invoices using Orb Invoicing. */ - @JsonProperty("sync_failed_at") - @ExcludeMissing fun syncFailedAt(syncFailedAt: JsonField) = apply { this.syncFailedAt = syncFailedAt } @@ -889,8 +949,6 @@ private constructor( * If payment was attempted on this invoice but failed, this will be the time of the most * recent attempt. */ - @JsonProperty("payment_failed_at") - @ExcludeMissing fun paymentFailedAt(paymentFailedAt: JsonField) = apply { this.paymentFailedAt = paymentFailedAt } @@ -908,8 +966,6 @@ private constructor( * attempt. This field is especially useful for delayed-notification payment mechanisms * (like bank transfers), where payment can take 3 days or more. */ - @JsonProperty("payment_started_at") - @ExcludeMissing fun paymentStartedAt(paymentStartedAt: JsonField) = apply { this.paymentStartedAt = paymentStartedAt } @@ -924,30 +980,22 @@ private constructor( * This is the final amount required to be charged to the customer and reflects the * application of the customer balance to the `total` of the invoice. */ - @JsonProperty("amount_due") - @ExcludeMissing fun amountDue(amountDue: JsonField) = apply { this.amountDue = amountDue } /** The creation time of the resource in Orb. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The creation time of the resource in Orb. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** An ISO 4217 currency string or `credits` */ fun currency(currency: String) = currency(JsonField.of(currency)) /** An ISO 4217 currency string or `credits` */ - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -955,14 +1003,10 @@ private constructor( * first discount in the list will be returned. If the list is empty, `None` will be * returned. */ - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonValue) = apply { this.discount = discount } fun discounts(discounts: List) = discounts(JsonField.of(discounts)) - @JsonProperty("discounts") - @ExcludeMissing fun discounts(discounts: JsonField>) = apply { this.discounts = discounts } @@ -971,20 +1015,16 @@ private constructor( fun dueDate(dueDate: OffsetDateTime) = dueDate(JsonField.of(dueDate)) /** When the invoice payment is due. */ - @JsonProperty("due_date") - @ExcludeMissing fun dueDate(dueDate: JsonField) = apply { this.dueDate = dueDate } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The link to download the PDF representation of the `Invoice`. */ fun invoicePdf(invoicePdf: String) = invoicePdf(JsonField.of(invoicePdf)) /** The link to download the PDF representation of the `Invoice`. */ - @JsonProperty("invoice_pdf") - @ExcludeMissing fun invoicePdf(invoicePdf: JsonField) = apply { this.invoicePdf = invoicePdf } /** @@ -997,36 +1037,26 @@ private constructor( * Automatically generated invoice number to help track and reconcile invoices. Invoice * numbers have a prefix such as `RFOBWG`. These can be sequential per account or customer. */ - @JsonProperty("invoice_number") - @ExcludeMissing fun invoiceNumber(invoiceNumber: JsonField) = apply { this.invoiceNumber = invoiceNumber } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -1035,14 +1065,10 @@ private constructor( fun lineItems(lineItems: List) = lineItems(JsonField.of(lineItems)) /** The breakdown of prices in this invoice. */ - @JsonProperty("line_items") - @ExcludeMissing fun lineItems(lineItems: JsonField>) = apply { this.lineItems = lineItems } fun subscription(subscription: Subscription) = subscription(JsonField.of(subscription)) - @JsonProperty("subscription") - @ExcludeMissing fun subscription(subscription: JsonField) = apply { this.subscription = subscription } @@ -1051,38 +1077,28 @@ private constructor( fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** The total before any discounts and minimums are applied. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** The total after any minimums and discounts have been applied. */ fun total(total: String) = total(JsonField.of(total)) /** The total after any minimums and discounts have been applied. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } fun customerBalanceTransactions( customerBalanceTransactions: List ) = customerBalanceTransactions(JsonField.of(customerBalanceTransactions)) - @JsonProperty("customer_balance_transactions") - @ExcludeMissing fun customerBalanceTransactions( customerBalanceTransactions: JsonField> ) = apply { this.customerBalanceTransactions = customerBalanceTransactions } fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun invoiceSource(invoiceSource: InvoiceSource) = invoiceSource(JsonField.of(invoiceSource)) - @JsonProperty("invoice_source") - @ExcludeMissing fun invoiceSource(invoiceSource: JsonField) = apply { this.invoiceSource = invoiceSource } @@ -1090,8 +1106,6 @@ private constructor( fun shippingAddress(shippingAddress: ShippingAddress) = shippingAddress(JsonField.of(shippingAddress)) - @JsonProperty("shipping_address") - @ExcludeMissing fun shippingAddress(shippingAddress: JsonField) = apply { this.shippingAddress = shippingAddress } @@ -1099,8 +1113,6 @@ private constructor( fun billingAddress(billingAddress: BillingAddress) = billingAddress(JsonField.of(billingAddress)) - @JsonProperty("billing_address") - @ExcludeMissing fun billingAddress(billingAddress: JsonField) = apply { this.billingAddress = billingAddress } @@ -1116,8 +1128,6 @@ private constructor( * A URL for the customer-facing invoice portal. This URL expires 30 days after the * invoice's due date, or 60 days after being re-generated through the UI. */ - @JsonProperty("hosted_invoice_url") - @ExcludeMissing fun hostedInvoiceUrl(hostedInvoiceUrl: JsonField) = apply { this.hostedInvoiceUrl = hostedInvoiceUrl } @@ -1132,8 +1142,6 @@ private constructor( * This is true if the invoice will be automatically issued in the future, and false * otherwise. */ - @JsonProperty("will_auto_issue") - @ExcludeMissing fun willAutoIssue(willAutoIssue: JsonField) = apply { this.willAutoIssue = willAutoIssue } @@ -1151,8 +1159,6 @@ private constructor( * eligible to be issued, otherwise it will be `null`. If `auto-issue` is true, the invoice * will automatically begin issuing at this time. */ - @JsonProperty("eligible_to_issue_at") - @ExcludeMissing fun eligibleToIssueAt(eligibleToIssueAt: JsonField) = apply { this.eligibleToIssueAt = eligibleToIssueAt } @@ -1371,8 +1377,6 @@ private constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonProperty("customer_tax_id") - @ExcludeMissing fun customerTaxId(customerTaxId: JsonField) = apply { this.customerTaxId = customerTaxId } @@ -1381,16 +1385,12 @@ private constructor( fun memo(memo: String) = memo(JsonField.of(memo)) /** Free-form text which is available on the invoice PDF and the Orb invoice portal. */ - @JsonProperty("memo") - @ExcludeMissing fun memo(memo: JsonField) = apply { this.memo = memo } /** A list of credit notes associated with the invoice */ fun creditNotes(creditNotes: List) = creditNotes(JsonField.of(creditNotes)) /** A list of credit notes associated with the invoice */ - @JsonProperty("credit_notes") - @ExcludeMissing fun creditNotes(creditNotes: JsonField>) = apply { this.creditNotes = creditNotes } @@ -1400,8 +1400,6 @@ private constructor( paymentAttempts(JsonField.of(paymentAttempts)) /** A list of payment attempts associated with the invoice */ - @JsonProperty("payment_attempts") - @ExcludeMissing fun paymentAttempts(paymentAttempts: JsonField>) = apply { this.paymentAttempts = paymentAttempts } @@ -1410,26 +1408,29 @@ private constructor( fun invoiceDate(invoiceDate: OffsetDateTime) = invoiceDate(JsonField.of(invoiceDate)) /** The scheduled date of the invoice */ - @JsonProperty("invoice_date") - @ExcludeMissing fun invoiceDate(invoiceDate: JsonField) = apply { this.invoiceDate = invoiceDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Invoice = Invoice( metadata, @@ -1477,19 +1478,26 @@ private constructor( ) } - @JsonDeserialize(builder = AutoCollection.Builder::class) @NoAutoDetect class AutoCollection + @JsonCreator private constructor( - private val nextAttemptAt: JsonField, - private val previouslyAttemptedAt: JsonField, - private val enabled: JsonField, - private val numAttempts: JsonField, - private val additionalProperties: Map, + @JsonProperty("next_attempt_at") + @ExcludeMissing + private val nextAttemptAt: JsonField = JsonMissing.of(), + @JsonProperty("previously_attempted_at") + @ExcludeMissing + private val previouslyAttemptedAt: JsonField = JsonMissing.of(), + @JsonProperty("enabled") + @ExcludeMissing + private val enabled: JsonField = JsonMissing.of(), + @JsonProperty("num_attempts") + @ExcludeMissing + private val numAttempts: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * If the invoice is scheduled for auto-collection, this field will reflect when the next * attempt will occur. If dunning has been exhausted, or auto-collection is not enabled for @@ -1545,6 +1553,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AutoCollection = apply { if (!validated) { nextAttemptAt() @@ -1572,11 +1582,11 @@ private constructor( @JvmSynthetic internal fun from(autoCollection: AutoCollection) = apply { - this.nextAttemptAt = autoCollection.nextAttemptAt - this.previouslyAttemptedAt = autoCollection.previouslyAttemptedAt - this.enabled = autoCollection.enabled - this.numAttempts = autoCollection.numAttempts - additionalProperties(autoCollection.additionalProperties) + nextAttemptAt = autoCollection.nextAttemptAt + previouslyAttemptedAt = autoCollection.previouslyAttemptedAt + enabled = autoCollection.enabled + numAttempts = autoCollection.numAttempts + additionalProperties = autoCollection.additionalProperties.toMutableMap() } /** @@ -1592,8 +1602,6 @@ private constructor( * next attempt will occur. If dunning has been exhausted, or auto-collection is not * enabled for this invoice, this field will be `null`. */ - @JsonProperty("next_attempt_at") - @ExcludeMissing fun nextAttemptAt(nextAttemptAt: JsonField) = apply { this.nextAttemptAt = nextAttemptAt } @@ -1617,8 +1625,6 @@ private constructor( * dunning has been exhausted (`previously_attempted_at` is non-null, but * `next_attempt_time` is null). */ - @JsonProperty("previously_attempted_at") - @ExcludeMissing fun previouslyAttemptedAt(previouslyAttemptedAt: JsonField) = apply { this.previouslyAttemptedAt = previouslyAttemptedAt } @@ -1627,32 +1633,33 @@ private constructor( fun enabled(enabled: Boolean) = enabled(JsonField.of(enabled)) /** True only if auto-collection is enabled for this invoice. */ - @JsonProperty("enabled") - @ExcludeMissing fun enabled(enabled: JsonField) = apply { this.enabled = enabled } /** Number of auto-collection payment attempts. */ fun numAttempts(numAttempts: Long) = numAttempts(JsonField.of(numAttempts)) /** Number of auto-collection payment attempts. */ - @JsonProperty("num_attempts") - @ExcludeMissing fun numAttempts(numAttempts: JsonField) = apply { this.numAttempts = numAttempts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AutoCollection = AutoCollection( nextAttemptAt, @@ -1681,21 +1688,32 @@ private constructor( "AutoCollection{nextAttemptAt=$nextAttemptAt, previouslyAttemptedAt=$previouslyAttemptedAt, enabled=$enabled, numAttempts=$numAttempts, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingAddress.Builder::class) @NoAutoDetect class BillingAddress + @JsonCreator private constructor( - private val line1: JsonField, - private val line2: JsonField, - private val city: JsonField, - private val state: JsonField, - private val postalCode: JsonField, - private val country: JsonField, - private val additionalProperties: Map, + @JsonProperty("line1") + @ExcludeMissing + private val line1: JsonField = JsonMissing.of(), + @JsonProperty("line2") + @ExcludeMissing + private val line2: JsonField = JsonMissing.of(), + @JsonProperty("city") + @ExcludeMissing + private val city: JsonField = JsonMissing.of(), + @JsonProperty("state") + @ExcludeMissing + private val state: JsonField = JsonMissing.of(), + @JsonProperty("postal_code") + @ExcludeMissing + private val postalCode: JsonField = JsonMissing.of(), + @JsonProperty("country") + @ExcludeMissing + private val country: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun line1(): Optional = Optional.ofNullable(line1.getNullable("line1")) fun line2(): Optional = Optional.ofNullable(line2.getNullable("line2")) @@ -1725,6 +1743,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingAddress = apply { if (!validated) { line1() @@ -1756,65 +1776,58 @@ private constructor( @JvmSynthetic internal fun from(billingAddress: BillingAddress) = apply { - this.line1 = billingAddress.line1 - this.line2 = billingAddress.line2 - this.city = billingAddress.city - this.state = billingAddress.state - this.postalCode = billingAddress.postalCode - this.country = billingAddress.country - additionalProperties(billingAddress.additionalProperties) + line1 = billingAddress.line1 + line2 = billingAddress.line2 + city = billingAddress.city + state = billingAddress.state + postalCode = billingAddress.postalCode + country = billingAddress.country + additionalProperties = billingAddress.additionalProperties.toMutableMap() } fun line1(line1: String) = line1(JsonField.of(line1)) - @JsonProperty("line1") - @ExcludeMissing fun line1(line1: JsonField) = apply { this.line1 = line1 } fun line2(line2: String) = line2(JsonField.of(line2)) - @JsonProperty("line2") - @ExcludeMissing fun line2(line2: JsonField) = apply { this.line2 = line2 } fun city(city: String) = city(JsonField.of(city)) - @JsonProperty("city") - @ExcludeMissing fun city(city: JsonField) = apply { this.city = city } fun state(state: String) = state(JsonField.of(state)) - @JsonProperty("state") - @ExcludeMissing fun state(state: JsonField) = apply { this.state = state } fun postalCode(postalCode: String) = postalCode(JsonField.of(postalCode)) - @JsonProperty("postal_code") - @ExcludeMissing fun postalCode(postalCode: JsonField) = apply { this.postalCode = postalCode } fun country(country: String) = country(JsonField.of(country)) - @JsonProperty("country") - @ExcludeMissing fun country(country: JsonField) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingAddress = BillingAddress( line1, @@ -1845,22 +1858,33 @@ private constructor( "BillingAddress{line1=$line1, line2=$line2, city=$city, state=$state, postalCode=$postalCode, country=$country, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = CreditNote.Builder::class) @NoAutoDetect class CreditNote + @JsonCreator private constructor( - private val id: JsonField, - private val creditNoteNumber: JsonField, - private val reason: JsonField, - private val total: JsonField, - private val voidedAt: JsonField, - private val type: JsonField, - private val memo: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("credit_note_number") + @ExcludeMissing + private val creditNoteNumber: JsonField = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("total") + @ExcludeMissing + private val total: JsonField = JsonMissing.of(), + @JsonProperty("voided_at") + @ExcludeMissing + private val voidedAt: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonProperty("memo") + @ExcludeMissing + private val memo: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun creditNoteNumber(): String = creditNoteNumber.getRequired("credit_note_number") @@ -1906,6 +1930,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditNote = apply { if (!validated) { id() @@ -1939,41 +1965,33 @@ private constructor( @JvmSynthetic internal fun from(creditNote: CreditNote) = apply { - this.id = creditNote.id - this.creditNoteNumber = creditNote.creditNoteNumber - this.reason = creditNote.reason - this.total = creditNote.total - this.voidedAt = creditNote.voidedAt - this.type = creditNote.type - this.memo = creditNote.memo - additionalProperties(creditNote.additionalProperties) + id = creditNote.id + creditNoteNumber = creditNote.creditNoteNumber + reason = creditNote.reason + total = creditNote.total + voidedAt = creditNote.voidedAt + type = creditNote.type + memo = creditNote.memo + additionalProperties = creditNote.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun creditNoteNumber(creditNoteNumber: String) = creditNoteNumber(JsonField.of(creditNoteNumber)) - @JsonProperty("credit_note_number") - @ExcludeMissing fun creditNoteNumber(creditNoteNumber: JsonField) = apply { this.creditNoteNumber = creditNoteNumber } fun reason(reason: String) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun total(total: String) = total(JsonField.of(total)) - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } /** @@ -1986,38 +2004,37 @@ private constructor( * If the credit note has a status of `void`, this gives a timestamp when the credit * note was voided. */ - @JsonProperty("voided_at") - @ExcludeMissing fun voidedAt(voidedAt: JsonField) = apply { this.voidedAt = voidedAt } fun type(type: String) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } /** An optional memo supplied on the credit note. */ fun memo(memo: String) = memo(JsonField.of(memo)) /** An optional memo supplied on the credit note. */ - @JsonProperty("memo") - @ExcludeMissing fun memo(memo: JsonField) = apply { this.memo = memo } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditNote = CreditNote( id, @@ -2049,17 +2066,18 @@ private constructor( "CreditNote{id=$id, creditNoteNumber=$creditNoteNumber, reason=$reason, total=$total, voidedAt=$voidedAt, type=$type, memo=$memo, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -2075,6 +2093,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -2098,40 +2118,41 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -2158,25 +2179,40 @@ private constructor( "Customer{id=$id, externalCustomerId=$externalCustomerId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = CustomerBalanceTransaction.Builder::class) @NoAutoDetect class CustomerBalanceTransaction + @JsonCreator private constructor( - private val id: JsonField, - private val createdAt: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val action: JsonField, - private val description: JsonField, - private val invoice: JsonField, - private val type: JsonField, - private val creditNote: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("action") + @ExcludeMissing + private val action: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("invoice") + @ExcludeMissing + private val invoice: JsonField = JsonMissing.of(), + @JsonProperty("type") @ExcludeMissing private val type: JsonField = JsonMissing.of(), + @JsonProperty("credit_note") + @ExcludeMissing + private val creditNote: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** A unique id for this transaction. */ fun id(): String = id.getRequired("id") @@ -2247,6 +2283,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerBalanceTransaction = apply { if (!validated) { id() @@ -2286,33 +2324,30 @@ private constructor( @JvmSynthetic internal fun from(customerBalanceTransaction: CustomerBalanceTransaction) = apply { - this.id = customerBalanceTransaction.id - this.createdAt = customerBalanceTransaction.createdAt - this.startingBalance = customerBalanceTransaction.startingBalance - this.endingBalance = customerBalanceTransaction.endingBalance - this.amount = customerBalanceTransaction.amount - this.action = customerBalanceTransaction.action - this.description = customerBalanceTransaction.description - this.invoice = customerBalanceTransaction.invoice - this.type = customerBalanceTransaction.type - this.creditNote = customerBalanceTransaction.creditNote - additionalProperties(customerBalanceTransaction.additionalProperties) + id = customerBalanceTransaction.id + createdAt = customerBalanceTransaction.createdAt + startingBalance = customerBalanceTransaction.startingBalance + endingBalance = customerBalanceTransaction.endingBalance + amount = customerBalanceTransaction.amount + action = customerBalanceTransaction.action + description = customerBalanceTransaction.description + invoice = customerBalanceTransaction.invoice + type = customerBalanceTransaction.type + creditNote = customerBalanceTransaction.creditNote + additionalProperties = + customerBalanceTransaction.additionalProperties.toMutableMap() } /** A unique id for this transaction. */ fun id(id: String) = id(JsonField.of(id)) /** A unique id for this transaction. */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** The creation time of this transaction. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The creation time of this transaction. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } @@ -2328,8 +2363,6 @@ private constructor( * The original value of the customer's balance prior to the transaction, in the * customer's currency. */ - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } @@ -2344,8 +2377,6 @@ private constructor( * The new value of the customer's balance prior to the transaction, in the customer's * currency. */ - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } @@ -2354,60 +2385,53 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The value of the amount changed in the transaction. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun action(action: Action) = action(JsonField.of(action)) - @JsonProperty("action") - @ExcludeMissing fun action(action: JsonField) = apply { this.action = action } /** An optional description provided for manual customer balance adjustments. */ fun description(description: String) = description(JsonField.of(description)) /** An optional description provided for manual customer balance adjustments. */ - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun invoice(invoice: Invoice) = invoice(JsonField.of(invoice)) - @JsonProperty("invoice") - @ExcludeMissing fun invoice(invoice: JsonField) = apply { this.invoice = invoice } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun creditNote(creditNote: CreditNote) = creditNote(JsonField.of(creditNote)) - @JsonProperty("credit_note") - @ExcludeMissing fun creditNote(creditNote: JsonField) = apply { this.creditNote = creditNote } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerBalanceTransaction = CustomerBalanceTransaction( id, @@ -2517,16 +2541,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditNote.Builder::class) @NoAutoDetect class CreditNote + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The id of the Credit note */ fun id(): String = id.getRequired("id") @@ -2537,6 +2562,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditNote = apply { if (!validated) { id() @@ -2558,26 +2585,23 @@ private constructor( @JvmSynthetic internal fun from(creditNote: CreditNote) = apply { - this.id = creditNote.id - additionalProperties(creditNote.additionalProperties) + id = creditNote.id + additionalProperties = creditNote.additionalProperties.toMutableMap() } /** The id of the Credit note */ fun id(id: String) = id(JsonField.of(id)) /** The id of the Credit note */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2585,6 +2609,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditNote = CreditNote(id, additionalProperties.toImmutable()) } @@ -2606,16 +2638,17 @@ private constructor( "CreditNote{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Invoice.Builder::class) @NoAutoDetect class Invoice + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The Invoice id */ fun id(): String = id.getRequired("id") @@ -2626,6 +2659,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Invoice = apply { if (!validated) { id() @@ -2647,26 +2682,23 @@ private constructor( @JvmSynthetic internal fun from(invoice: Invoice) = apply { - this.id = invoice.id - additionalProperties(invoice.additionalProperties) + id = invoice.id + additionalProperties = invoice.additionalProperties.toMutableMap() } /** The Invoice id */ fun id(id: String) = id(JsonField.of(id)) /** The Invoice id */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2674,6 +2706,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Invoice = Invoice(id, additionalProperties.toImmutable()) } @@ -2875,18 +2915,21 @@ private constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonDeserialize(builder = CustomerTaxId.Builder::class) @NoAutoDetect class CustomerTaxId + @JsonCreator private constructor( - private val country: JsonField, - private val type: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("country") + @ExcludeMissing + private val country: JsonField = JsonMissing.of(), + @JsonProperty("type") @ExcludeMissing private val type: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun country(): Country = country.getRequired("country") fun type(): Type = type.getRequired("type") @@ -2903,6 +2946,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerTaxId = apply { if (!validated) { country() @@ -2928,44 +2973,43 @@ private constructor( @JvmSynthetic internal fun from(customerTaxId: CustomerTaxId) = apply { - this.country = customerTaxId.country - this.type = customerTaxId.type - this.value = customerTaxId.value - additionalProperties(customerTaxId.additionalProperties) + country = customerTaxId.country + type = customerTaxId.type + value = customerTaxId.value + additionalProperties = customerTaxId.additionalProperties.toMutableMap() } fun country(country: Country) = country(JsonField.of(country)) - @JsonProperty("country") - @ExcludeMissing fun country(country: JsonField) = apply { this.country = country } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun value(value: String) = value(JsonField.of(value)) - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerTaxId = CustomerTaxId( country, @@ -4040,31 +4084,60 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = LineItem.Builder::class) @NoAutoDetect class LineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val discount: JsonField, - private val endDate: JsonField, - private val grouping: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val startDate: JsonField, - private val subtotal: JsonField, - private val subLineItems: JsonField>, - private val taxAmounts: JsonField>, - private val id: JsonField, - private val price: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("sub_line_items") + @ExcludeMissing + private val subLineItems: JsonField> = JsonMissing.of(), + @JsonProperty("tax_amounts") + @ExcludeMissing + private val taxAmounts: JsonField> = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The final amount after any discounts or minimums. */ fun amount(): String = amount.getRequired("amount") @@ -4629,6 +4702,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): LineItem = apply { if (!validated) { amount() @@ -4680,45 +4755,39 @@ private constructor( @JvmSynthetic internal fun from(lineItem: LineItem) = apply { - this.amount = lineItem.amount - this.discount = lineItem.discount - this.endDate = lineItem.endDate - this.grouping = lineItem.grouping - this.minimum = lineItem.minimum - this.minimumAmount = lineItem.minimumAmount - this.maximum = lineItem.maximum - this.maximumAmount = lineItem.maximumAmount - this.name = lineItem.name - this.quantity = lineItem.quantity - this.startDate = lineItem.startDate - this.subtotal = lineItem.subtotal - this.subLineItems = lineItem.subLineItems - this.taxAmounts = lineItem.taxAmounts - this.id = lineItem.id - this.price = lineItem.price - additionalProperties(lineItem.additionalProperties) + amount = lineItem.amount + discount = lineItem.discount + endDate = lineItem.endDate + grouping = lineItem.grouping + minimum = lineItem.minimum + minimumAmount = lineItem.minimumAmount + maximum = lineItem.maximum + maximumAmount = lineItem.maximumAmount + name = lineItem.name + quantity = lineItem.quantity + startDate = lineItem.startDate + subtotal = lineItem.subtotal + subLineItems = lineItem.subLineItems + taxAmounts = lineItem.taxAmounts + id = lineItem.id + price = lineItem.price + additionalProperties = lineItem.additionalProperties.toMutableMap() } /** The final amount after any discounts or minimums. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The final amount after any discounts or minimums. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } /** The end date of the range of time applied for this line item's price. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the range of time applied for this line item's price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -4733,34 +4802,24 @@ private constructor( * populated with the key and a value. The `amount` and `subtotal` will be the values * for this particular grouping. */ - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -4769,22 +4828,16 @@ private constructor( fun name(name: String) = name(JsonField.of(name)) /** The name of the price associated with this line item. */ - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } /** The start date of the range of time applied for this line item's price. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the range of time applied for this line item's price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4793,8 +4846,6 @@ private constructor( fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** The line amount before any line item-specific discounts or minimums. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** @@ -4808,8 +4859,6 @@ private constructor( * For complex pricing structures, the line item can be broken down further in * `sub_line_items`. */ - @JsonProperty("sub_line_items") - @ExcludeMissing fun subLineItems(subLineItems: JsonField>) = apply { this.subLineItems = subLineItems } @@ -4824,8 +4873,6 @@ private constructor( * An array of tax rates and their incurred tax amounts. Empty if no tax integration is * configured. */ - @JsonProperty("tax_amounts") - @ExcludeMissing fun taxAmounts(taxAmounts: JsonField>) = apply { this.taxAmounts = taxAmounts } @@ -4834,8 +4881,6 @@ private constructor( fun id(id: String) = id(JsonField.of(id)) /** A unique ID for this line item. */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5296,24 +5341,27 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): LineItem = LineItem( amount, @@ -5336,17 +5384,20 @@ private constructor( ) } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -5372,6 +5423,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -5395,9 +5448,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -5405,8 +5458,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -5422,20 +5473,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5443,6 +5491,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -5469,17 +5525,20 @@ private constructor( "Maximum{maximumAmount=$maximumAmount, appliesToPriceIds=$appliesToPriceIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -5505,6 +5564,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -5528,9 +5589,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -5538,8 +5599,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -5555,20 +5614,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5576,6 +5632,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -5767,21 +5831,32 @@ private constructor( } } - @JsonDeserialize(builder = MatrixSubLineItem.Builder::class) @NoAutoDetect class MatrixSubLineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val grouping: JsonField, - private val type: JsonField, - private val matrixConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonProperty("matrix_config") + @ExcludeMissing + private val matrixConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The total amount for this sub line item. */ fun amount(): String = amount.getRequired("amount") @@ -5813,6 +5888,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixSubLineItem = apply { if (!validated) { amount() @@ -5844,64 +5921,51 @@ private constructor( @JvmSynthetic internal fun from(matrixSubLineItem: MatrixSubLineItem) = apply { - this.amount = matrixSubLineItem.amount - this.name = matrixSubLineItem.name - this.quantity = matrixSubLineItem.quantity - this.grouping = matrixSubLineItem.grouping - this.type = matrixSubLineItem.type - this.matrixConfig = matrixSubLineItem.matrixConfig - additionalProperties(matrixSubLineItem.additionalProperties) + amount = matrixSubLineItem.amount + name = matrixSubLineItem.name + quantity = matrixSubLineItem.quantity + grouping = matrixSubLineItem.grouping + type = matrixSubLineItem.type + matrixConfig = matrixSubLineItem.matrixConfig + additionalProperties = matrixSubLineItem.additionalProperties.toMutableMap() } /** The total amount for this sub line item. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The total amount for this sub line item. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun grouping(grouping: Grouping) = grouping(JsonField.of(grouping)) - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun matrixConfig(matrixConfig: MatrixConfig) = matrixConfig(JsonField.of(matrixConfig)) - @JsonProperty("matrix_config") - @ExcludeMissing fun matrixConfig(matrixConfig: JsonField) = apply { this.matrixConfig = matrixConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5909,6 +5973,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixSubLineItem = MatrixSubLineItem( amount, @@ -5921,17 +5993,20 @@ private constructor( ) } - @JsonDeserialize(builder = Grouping.Builder::class) @NoAutoDetect class Grouping + @JsonCreator private constructor( - private val key: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("key") + @ExcludeMissing + private val key: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun key(): String = key.getRequired("key") /** No value indicates the default group */ @@ -5946,6 +6021,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Grouping = apply { if (!validated) { key() @@ -5970,40 +6047,43 @@ private constructor( @JvmSynthetic internal fun from(grouping: Grouping) = apply { - this.key = grouping.key - this.value = grouping.value - additionalProperties(grouping.additionalProperties) + key = grouping.key + value = grouping.value + additionalProperties = grouping.additionalProperties.toMutableMap() } fun key(key: String) = key(JsonField.of(key)) - @JsonProperty("key") - @ExcludeMissing fun key(key: JsonField) = apply { this.key = key } /** No value indicates the default group */ fun value(value: String) = value(JsonField.of(value)) /** No value indicates the default group */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Grouping = Grouping( key, @@ -6030,16 +6110,17 @@ private constructor( "Grouping{key=$key, value=$value, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimension_values") + @ExcludeMissing + private val dimensionValues: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The ordered dimension values for this line item. */ fun dimensionValues(): List = dimensionValues.getRequired("dimension_values") @@ -6053,6 +6134,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixConfig = apply { if (!validated) { dimensionValues() @@ -6075,8 +6158,8 @@ private constructor( @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensionValues = matrixConfig.dimensionValues - additionalProperties(matrixConfig.additionalProperties) + dimensionValues = matrixConfig.dimensionValues + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** The ordered dimension values for this line item. */ @@ -6084,8 +6167,6 @@ private constructor( dimensionValues(JsonField.of(dimensionValues)) /** The ordered dimension values for this line item. */ - @JsonProperty("dimension_values") - @ExcludeMissing fun dimensionValues(dimensionValues: JsonField>) = apply { this.dimensionValues = dimensionValues } @@ -6093,18 +6174,25 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( dimensionValues.map { it.toImmutable() }, @@ -6200,21 +6288,32 @@ private constructor( "MatrixSubLineItem{amount=$amount, name=$name, quantity=$quantity, grouping=$grouping, type=$type, matrixConfig=$matrixConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TierSubLineItem.Builder::class) @NoAutoDetect class TierSubLineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val grouping: JsonField, - private val type: JsonField, - private val tierConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonProperty("tier_config") + @ExcludeMissing + private val tierConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The total amount for this sub line item. */ fun amount(): String = amount.getRequired("amount") @@ -6246,6 +6345,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TierSubLineItem = apply { if (!validated) { amount() @@ -6277,63 +6378,50 @@ private constructor( @JvmSynthetic internal fun from(tierSubLineItem: TierSubLineItem) = apply { - this.amount = tierSubLineItem.amount - this.name = tierSubLineItem.name - this.quantity = tierSubLineItem.quantity - this.grouping = tierSubLineItem.grouping - this.type = tierSubLineItem.type - this.tierConfig = tierSubLineItem.tierConfig - additionalProperties(tierSubLineItem.additionalProperties) + amount = tierSubLineItem.amount + name = tierSubLineItem.name + quantity = tierSubLineItem.quantity + grouping = tierSubLineItem.grouping + type = tierSubLineItem.type + tierConfig = tierSubLineItem.tierConfig + additionalProperties = tierSubLineItem.additionalProperties.toMutableMap() } /** The total amount for this sub line item. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The total amount for this sub line item. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun grouping(grouping: Grouping) = grouping(JsonField.of(grouping)) - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun tierConfig(tierConfig: TierConfig) = tierConfig(JsonField.of(tierConfig)) - @JsonProperty("tier_config") - @ExcludeMissing fun tierConfig(tierConfig: JsonField) = apply { this.tierConfig = tierConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6341,6 +6429,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TierSubLineItem = TierSubLineItem( amount, @@ -6353,17 +6449,20 @@ private constructor( ) } - @JsonDeserialize(builder = Grouping.Builder::class) @NoAutoDetect class Grouping + @JsonCreator private constructor( - private val key: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("key") + @ExcludeMissing + private val key: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun key(): String = key.getRequired("key") /** No value indicates the default group */ @@ -6378,6 +6477,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Grouping = apply { if (!validated) { key() @@ -6402,40 +6503,43 @@ private constructor( @JvmSynthetic internal fun from(grouping: Grouping) = apply { - this.key = grouping.key - this.value = grouping.value - additionalProperties(grouping.additionalProperties) + key = grouping.key + value = grouping.value + additionalProperties = grouping.additionalProperties.toMutableMap() } fun key(key: String) = key(JsonField.of(key)) - @JsonProperty("key") - @ExcludeMissing fun key(key: JsonField) = apply { this.key = key } /** No value indicates the default group */ fun value(value: String) = value(JsonField.of(value)) /** No value indicates the default group */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Grouping = Grouping( key, @@ -6462,18 +6566,23 @@ private constructor( "Grouping{key=$key, value=$value, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TierConfig.Builder::class) @NoAutoDetect class TierConfig + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") + @ExcludeMissing + private val firstUnit: JsonField = JsonMissing.of(), + @JsonProperty("last_unit") + @ExcludeMissing + private val lastUnit: JsonField = JsonMissing.of(), + @JsonProperty("unit_amount") + @ExcludeMissing + private val unitAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun firstUnit(): Double = firstUnit.getRequired("first_unit") fun lastUnit(): Optional = @@ -6491,6 +6600,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TierConfig = apply { if (!validated) { firstUnit() @@ -6517,32 +6628,26 @@ private constructor( @JvmSynthetic internal fun from(tierConfig: TierConfig) = apply { - this.firstUnit = tierConfig.firstUnit - this.lastUnit = tierConfig.lastUnit - this.unitAmount = tierConfig.unitAmount - additionalProperties(tierConfig.additionalProperties) + firstUnit = tierConfig.firstUnit + lastUnit = tierConfig.lastUnit + unitAmount = tierConfig.unitAmount + additionalProperties = tierConfig.additionalProperties.toMutableMap() } fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) - @JsonProperty("first_unit") - @ExcludeMissing fun firstUnit(firstUnit: JsonField) = apply { this.firstUnit = firstUnit } fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) - @JsonProperty("last_unit") - @ExcludeMissing fun lastUnit(lastUnit: JsonField) = apply { this.lastUnit = lastUnit } fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - @JsonProperty("unit_amount") - @ExcludeMissing fun unitAmount(unitAmount: JsonField) = apply { this.unitAmount = unitAmount } @@ -6550,18 +6655,25 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TierConfig = TierConfig( firstUnit, @@ -6659,20 +6771,29 @@ private constructor( "TierSubLineItem{amount=$amount, name=$name, quantity=$quantity, grouping=$grouping, type=$type, tierConfig=$tierConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = OtherSubLineItem.Builder::class) @NoAutoDetect class OtherSubLineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val grouping: JsonField, - private val type: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The total amount for this sub line item. */ fun amount(): String = amount.getRequired("amount") @@ -6700,6 +6821,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): OtherSubLineItem = apply { if (!validated) { amount() @@ -6729,54 +6852,43 @@ private constructor( @JvmSynthetic internal fun from(otherSubLineItem: OtherSubLineItem) = apply { - this.amount = otherSubLineItem.amount - this.name = otherSubLineItem.name - this.quantity = otherSubLineItem.quantity - this.grouping = otherSubLineItem.grouping - this.type = otherSubLineItem.type - additionalProperties(otherSubLineItem.additionalProperties) + amount = otherSubLineItem.amount + name = otherSubLineItem.name + quantity = otherSubLineItem.quantity + grouping = otherSubLineItem.grouping + type = otherSubLineItem.type + additionalProperties = otherSubLineItem.additionalProperties.toMutableMap() } /** The total amount for this sub line item. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The total amount for this sub line item. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun grouping(grouping: Grouping) = grouping(JsonField.of(grouping)) - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6784,6 +6896,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): OtherSubLineItem = OtherSubLineItem( amount, @@ -6795,17 +6915,20 @@ private constructor( ) } - @JsonDeserialize(builder = Grouping.Builder::class) @NoAutoDetect class Grouping + @JsonCreator private constructor( - private val key: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("key") + @ExcludeMissing + private val key: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun key(): String = key.getRequired("key") /** No value indicates the default group */ @@ -6820,6 +6943,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Grouping = apply { if (!validated) { key() @@ -6844,40 +6969,43 @@ private constructor( @JvmSynthetic internal fun from(grouping: Grouping) = apply { - this.key = grouping.key - this.value = grouping.value - additionalProperties(grouping.additionalProperties) + key = grouping.key + value = grouping.value + additionalProperties = grouping.additionalProperties.toMutableMap() } fun key(key: String) = key(JsonField.of(key)) - @JsonProperty("key") - @ExcludeMissing fun key(key: JsonField) = apply { this.key = key } /** No value indicates the default group */ fun value(value: String) = value(JsonField.of(value)) /** No value indicates the default group */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Grouping = Grouping( key, @@ -6975,18 +7103,23 @@ private constructor( } } - @JsonDeserialize(builder = TaxAmount.Builder::class) @NoAutoDetect class TaxAmount + @JsonCreator private constructor( - private val taxRateDescription: JsonField, - private val taxRatePercentage: JsonField, - private val amount: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_rate_description") + @ExcludeMissing + private val taxRateDescription: JsonField = JsonMissing.of(), + @JsonProperty("tax_rate_percentage") + @ExcludeMissing + private val taxRatePercentage: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The human-readable description of the applied tax rate. */ fun taxRateDescription(): String = taxRateDescription.getRequired("tax_rate_description") @@ -7015,6 +7148,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TaxAmount = apply { if (!validated) { taxRateDescription() @@ -7040,10 +7175,10 @@ private constructor( @JvmSynthetic internal fun from(taxAmount: TaxAmount) = apply { - this.taxRateDescription = taxAmount.taxRateDescription - this.taxRatePercentage = taxAmount.taxRatePercentage - this.amount = taxAmount.amount - additionalProperties(taxAmount.additionalProperties) + taxRateDescription = taxAmount.taxRateDescription + taxRatePercentage = taxAmount.taxRatePercentage + amount = taxAmount.amount + additionalProperties = taxAmount.additionalProperties.toMutableMap() } /** The human-readable description of the applied tax rate. */ @@ -7051,8 +7186,6 @@ private constructor( taxRateDescription(JsonField.of(taxRateDescription)) /** The human-readable description of the applied tax rate. */ - @JsonProperty("tax_rate_description") - @ExcludeMissing fun taxRateDescription(taxRateDescription: JsonField) = apply { this.taxRateDescription = taxRateDescription } @@ -7062,8 +7195,6 @@ private constructor( taxRatePercentage(JsonField.of(taxRatePercentage)) /** The tax rate percentage, out of 100. */ - @JsonProperty("tax_rate_percentage") - @ExcludeMissing fun taxRatePercentage(taxRatePercentage: JsonField) = apply { this.taxRatePercentage = taxRatePercentage } @@ -7072,18 +7203,15 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount of additional tax incurred by this tax rate. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7091,6 +7219,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TaxAmount = TaxAmount( taxRateDescription, @@ -7136,17 +7272,20 @@ private constructor( "LineItem{amount=$amount, discount=$discount, endDate=$endDate, grouping=$grouping, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, name=$name, quantity=$quantity, startDate=$startDate, subtotal=$subtotal, subLineItems=$subLineItems, taxAmounts=$taxAmounts, id=$id, price=$price, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -7172,6 +7311,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -7195,17 +7336,15 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -7221,26 +7360,29 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase maximums, * this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -7272,19 +7414,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -7304,23 +7447,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -7341,17 +7489,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -7377,6 +7528,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -7400,17 +7553,15 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -7426,26 +7577,29 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase minimums, * this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -7472,21 +7626,30 @@ private constructor( "Minimum{minimumAmount=$minimumAmount, appliesToPriceIds=$appliesToPriceIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PaymentAttempt.Builder::class) @NoAutoDetect class PaymentAttempt + @JsonCreator private constructor( - private val id: JsonField, - private val paymentProvider: JsonField, - private val paymentProviderId: JsonField, - private val amount: JsonField, - private val succeeded: JsonField, - private val createdAt: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("payment_provider") + @ExcludeMissing + private val paymentProvider: JsonField = JsonMissing.of(), + @JsonProperty("payment_provider_id") + @ExcludeMissing + private val paymentProviderId: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("succeeded") + @ExcludeMissing + private val succeeded: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The ID of the payment attempt. */ fun id(): String = id.getRequired("id") @@ -7531,6 +7694,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PaymentAttempt = apply { if (!validated) { id() @@ -7562,21 +7727,19 @@ private constructor( @JvmSynthetic internal fun from(paymentAttempt: PaymentAttempt) = apply { - this.id = paymentAttempt.id - this.paymentProvider = paymentAttempt.paymentProvider - this.paymentProviderId = paymentAttempt.paymentProviderId - this.amount = paymentAttempt.amount - this.succeeded = paymentAttempt.succeeded - this.createdAt = paymentAttempt.createdAt - additionalProperties(paymentAttempt.additionalProperties) + id = paymentAttempt.id + paymentProvider = paymentAttempt.paymentProvider + paymentProviderId = paymentAttempt.paymentProviderId + amount = paymentAttempt.amount + succeeded = paymentAttempt.succeeded + createdAt = paymentAttempt.createdAt + additionalProperties = paymentAttempt.additionalProperties.toMutableMap() } /** The ID of the payment attempt. */ fun id(id: String) = id(JsonField.of(id)) /** The ID of the payment attempt. */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** The payment provider that attempted to collect the payment. */ @@ -7584,8 +7747,6 @@ private constructor( paymentProvider(JsonField.of(paymentProvider)) /** The payment provider that attempted to collect the payment. */ - @JsonProperty("payment_provider") - @ExcludeMissing fun paymentProvider(paymentProvider: JsonField) = apply { this.paymentProvider = paymentProvider } @@ -7595,8 +7756,6 @@ private constructor( paymentProviderId(JsonField.of(paymentProviderId)) /** The ID of the payment attempt in the payment provider. */ - @JsonProperty("payment_provider_id") - @ExcludeMissing fun paymentProviderId(paymentProviderId: JsonField) = apply { this.paymentProviderId = paymentProviderId } @@ -7605,42 +7764,41 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount of the payment attempt. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } /** Whether the payment attempt succeeded. */ fun succeeded(succeeded: Boolean) = succeeded(JsonField.of(succeeded)) /** Whether the payment attempt succeeded. */ - @JsonProperty("succeeded") - @ExcludeMissing fun succeeded(succeeded: JsonField) = apply { this.succeeded = succeeded } /** The time at which the payment attempt was created. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The time at which the payment attempt was created. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PaymentAttempt = PaymentAttempt( id, @@ -7722,21 +7880,32 @@ private constructor( "PaymentAttempt{id=$id, paymentProvider=$paymentProvider, paymentProviderId=$paymentProviderId, amount=$amount, succeeded=$succeeded, createdAt=$createdAt, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ShippingAddress.Builder::class) @NoAutoDetect class ShippingAddress + @JsonCreator private constructor( - private val line1: JsonField, - private val line2: JsonField, - private val city: JsonField, - private val state: JsonField, - private val postalCode: JsonField, - private val country: JsonField, - private val additionalProperties: Map, + @JsonProperty("line1") + @ExcludeMissing + private val line1: JsonField = JsonMissing.of(), + @JsonProperty("line2") + @ExcludeMissing + private val line2: JsonField = JsonMissing.of(), + @JsonProperty("city") + @ExcludeMissing + private val city: JsonField = JsonMissing.of(), + @JsonProperty("state") + @ExcludeMissing + private val state: JsonField = JsonMissing.of(), + @JsonProperty("postal_code") + @ExcludeMissing + private val postalCode: JsonField = JsonMissing.of(), + @JsonProperty("country") + @ExcludeMissing + private val country: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun line1(): Optional = Optional.ofNullable(line1.getNullable("line1")) fun line2(): Optional = Optional.ofNullable(line2.getNullable("line2")) @@ -7766,6 +7935,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ShippingAddress = apply { if (!validated) { line1() @@ -7797,65 +7968,58 @@ private constructor( @JvmSynthetic internal fun from(shippingAddress: ShippingAddress) = apply { - this.line1 = shippingAddress.line1 - this.line2 = shippingAddress.line2 - this.city = shippingAddress.city - this.state = shippingAddress.state - this.postalCode = shippingAddress.postalCode - this.country = shippingAddress.country - additionalProperties(shippingAddress.additionalProperties) + line1 = shippingAddress.line1 + line2 = shippingAddress.line2 + city = shippingAddress.city + state = shippingAddress.state + postalCode = shippingAddress.postalCode + country = shippingAddress.country + additionalProperties = shippingAddress.additionalProperties.toMutableMap() } fun line1(line1: String) = line1(JsonField.of(line1)) - @JsonProperty("line1") - @ExcludeMissing fun line1(line1: JsonField) = apply { this.line1 = line1 } fun line2(line2: String) = line2(JsonField.of(line2)) - @JsonProperty("line2") - @ExcludeMissing fun line2(line2: JsonField) = apply { this.line2 = line2 } fun city(city: String) = city(JsonField.of(city)) - @JsonProperty("city") - @ExcludeMissing fun city(city: JsonField) = apply { this.city = city } fun state(state: String) = state(JsonField.of(state)) - @JsonProperty("state") - @ExcludeMissing fun state(state: JsonField) = apply { this.state = state } fun postalCode(postalCode: String) = postalCode(JsonField.of(postalCode)) - @JsonProperty("postal_code") - @ExcludeMissing fun postalCode(postalCode: JsonField) = apply { this.postalCode = postalCode } fun country(country: String) = country(JsonField.of(country)) - @JsonProperty("country") - @ExcludeMissing fun country(country: JsonField) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ShippingAddress = ShippingAddress( line1, @@ -7961,16 +8125,15 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = Subscription.Builder::class) @NoAutoDetect class Subscription + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -7979,6 +8142,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Subscription = apply { if (!validated) { id() @@ -8000,30 +8165,33 @@ private constructor( @JvmSynthetic internal fun from(subscription: Subscription) = apply { - this.id = subscription.id - additionalProperties(subscription.additionalProperties) + id = subscription.id + additionalProperties = subscription.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Subscription = Subscription(id, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceCreateParams.kt index 2825cf4a..3685b93c 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceCreateParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.LocalDate @@ -85,73 +85,77 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = InvoiceCreateBody.Builder::class) @NoAutoDetect class InvoiceCreateBody + @JsonCreator internal constructor( - private val currency: String?, - private val invoiceDate: OffsetDateTime?, - private val lineItems: List?, - private val netTerms: Long?, - private val customerId: String?, - private val discount: Discount?, - private val externalCustomerId: String?, - private val memo: String?, - private val metadata: Metadata?, - private val willAutoIssue: Boolean?, - private val additionalProperties: Map, + @JsonProperty("currency") private val currency: String, + @JsonProperty("invoice_date") private val invoiceDate: OffsetDateTime, + @JsonProperty("line_items") private val lineItems: List, + @JsonProperty("net_terms") private val netTerms: Long, + @JsonProperty("customer_id") private val customerId: String?, + @JsonProperty("discount") private val discount: Discount?, + @JsonProperty("external_customer_id") private val externalCustomerId: String?, + @JsonProperty("memo") private val memo: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("will_auto_issue") private val willAutoIssue: Boolean?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * An ISO 4217 currency string. Must be the same as the customer's currency if it is set. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency /** * Optional invoice date to set. Must be in the past, if not set, `invoice_date` is set to * the current time in the customer's timezone. */ - @JsonProperty("invoice_date") fun invoiceDate(): OffsetDateTime? = invoiceDate + @JsonProperty("invoice_date") fun invoiceDate(): OffsetDateTime = invoiceDate - @JsonProperty("line_items") fun lineItems(): List? = lineItems + @JsonProperty("line_items") fun lineItems(): List = lineItems /** * Determines the difference between the invoice issue date for subscription invoices as the * date that they are due. A value of '0' here represents that the invoice is due on issue, * whereas a value of 30 represents that the customer has 30 days to pay the invoice. */ - @JsonProperty("net_terms") fun netTerms(): Long? = netTerms + @JsonProperty("net_terms") fun netTerms(): Long = netTerms /** * The id of the `Customer` to create this invoice for. One of `customer_id` and * `external_customer_id` are required. */ - @JsonProperty("customer_id") fun customerId(): String? = customerId + @JsonProperty("customer_id") + fun customerId(): Optional = Optional.ofNullable(customerId) /** An optional discount to attach to the invoice. */ - @JsonProperty("discount") fun discount(): Discount? = discount + @JsonProperty("discount") fun discount(): Optional = Optional.ofNullable(discount) /** * The `external_customer_id` of the `Customer` to create this invoice for. One of * `customer_id` and `external_customer_id` are required. */ - @JsonProperty("external_customer_id") fun externalCustomerId(): String? = externalCustomerId + @JsonProperty("external_customer_id") + fun externalCustomerId(): Optional = Optional.ofNullable(externalCustomerId) /** An optional memo to attach to the invoice. */ - @JsonProperty("memo") fun memo(): String? = memo + @JsonProperty("memo") fun memo(): Optional = Optional.ofNullable(memo) /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * When true, this invoice will automatically be issued upon creation. When false, the * resulting invoice will require manual review to issue. Defaulted to false. */ - @JsonProperty("will_auto_issue") fun willAutoIssue(): Boolean? = willAutoIssue + @JsonProperty("will_auto_issue") + fun willAutoIssue(): Optional = Optional.ofNullable(willAutoIssue) @JsonAnyGetter @ExcludeMissing @@ -180,34 +184,31 @@ constructor( @JvmSynthetic internal fun from(invoiceCreateBody: InvoiceCreateBody) = apply { - this.currency = invoiceCreateBody.currency - this.invoiceDate = invoiceCreateBody.invoiceDate - this.lineItems = invoiceCreateBody.lineItems - this.netTerms = invoiceCreateBody.netTerms - this.customerId = invoiceCreateBody.customerId - this.discount = invoiceCreateBody.discount - this.externalCustomerId = invoiceCreateBody.externalCustomerId - this.memo = invoiceCreateBody.memo - this.metadata = invoiceCreateBody.metadata - this.willAutoIssue = invoiceCreateBody.willAutoIssue - additionalProperties(invoiceCreateBody.additionalProperties) + currency = invoiceCreateBody.currency + invoiceDate = invoiceCreateBody.invoiceDate + lineItems = invoiceCreateBody.lineItems.toMutableList() + netTerms = invoiceCreateBody.netTerms + customerId = invoiceCreateBody.customerId + discount = invoiceCreateBody.discount + externalCustomerId = invoiceCreateBody.externalCustomerId + memo = invoiceCreateBody.memo + metadata = invoiceCreateBody.metadata + willAutoIssue = invoiceCreateBody.willAutoIssue + additionalProperties = invoiceCreateBody.additionalProperties.toMutableMap() } /** * An ISO 4217 currency string. Must be the same as the customer's currency if it is * set. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** * Optional invoice date to set. Must be in the past, if not set, `invoice_date` is set * to the current time in the customer's timezone. */ - @JsonProperty("invoice_date") fun invoiceDate(invoiceDate: OffsetDateTime) = apply { this.invoiceDate = invoiceDate } - @JsonProperty("line_items") fun lineItems(lineItems: List) = apply { this.lineItems = lineItems } /** @@ -216,61 +217,60 @@ constructor( * issue, whereas a value of 30 represents that the customer has 30 days to pay the * invoice. */ - @JsonProperty("net_terms") fun netTerms(netTerms: Long) = apply { this.netTerms = netTerms } /** * The id of the `Customer` to create this invoice for. One of `customer_id` and * `external_customer_id` are required. */ - @JsonProperty("customer_id") fun customerId(customerId: String) = apply { this.customerId = customerId } /** An optional discount to attach to the invoice. */ - @JsonProperty("discount") fun discount(discount: Discount) = apply { this.discount = discount } /** * The `external_customer_id` of the `Customer` to create this invoice for. One of * `customer_id` and `external_customer_id` are required. */ - @JsonProperty("external_customer_id") fun externalCustomerId(externalCustomerId: String) = apply { this.externalCustomerId = externalCustomerId } /** An optional memo to attach to the invoice. */ - @JsonProperty("memo") fun memo(memo: String) = apply { this.memo = memo } + fun memo(memo: String) = apply { this.memo = memo } /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * When true, this invoice will automatically be issued upon creation. When false, the * resulting invoice will require manual review to issue. Defaulted to false. */ - @JsonProperty("will_auto_issue") fun willAutoIssue(willAutoIssue: Boolean) = apply { this.willAutoIssue = willAutoIssue } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceCreateBody = InvoiceCreateBody( checkNotNull(currency) { "`currency` is required but was not set" }, @@ -563,37 +563,38 @@ constructor( ) } - @JsonDeserialize(builder = LineItem.Builder::class) @NoAutoDetect class LineItem + @JsonCreator private constructor( - private val startDate: LocalDate?, - private val endDate: LocalDate?, - private val quantity: Double?, - private val name: String?, - private val itemId: String?, - private val modelType: ModelType?, - private val unitConfig: UnitConfig?, - private val additionalProperties: Map, + @JsonProperty("start_date") private val startDate: LocalDate, + @JsonProperty("end_date") private val endDate: LocalDate, + @JsonProperty("quantity") private val quantity: Double, + @JsonProperty("name") private val name: String, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_config") private val unitConfig: UnitConfig, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** A date string to specify the line item's start date in the customer's timezone. */ - @JsonProperty("start_date") fun startDate(): LocalDate? = startDate + @JsonProperty("start_date") fun startDate(): LocalDate = startDate /** A date string to specify the line item's end date in the customer's timezone. */ - @JsonProperty("end_date") fun endDate(): LocalDate? = endDate + @JsonProperty("end_date") fun endDate(): LocalDate = endDate /** The number of units on the line item */ - @JsonProperty("quantity") fun quantity(): Double? = quantity + @JsonProperty("quantity") fun quantity(): Double = quantity /** The name of the line item. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("unit_config") fun unitConfig(): UnitConfig? = unitConfig + @JsonProperty("unit_config") fun unitConfig(): UnitConfig = unitConfig @JsonAnyGetter @ExcludeMissing @@ -619,53 +620,53 @@ constructor( @JvmSynthetic internal fun from(lineItem: LineItem) = apply { - this.startDate = lineItem.startDate - this.endDate = lineItem.endDate - this.quantity = lineItem.quantity - this.name = lineItem.name - this.itemId = lineItem.itemId - this.modelType = lineItem.modelType - this.unitConfig = lineItem.unitConfig - additionalProperties(lineItem.additionalProperties) + startDate = lineItem.startDate + endDate = lineItem.endDate + quantity = lineItem.quantity + name = lineItem.name + itemId = lineItem.itemId + modelType = lineItem.modelType + unitConfig = lineItem.unitConfig + additionalProperties = lineItem.additionalProperties.toMutableMap() } /** A date string to specify the line item's start date in the customer's timezone. */ - @JsonProperty("start_date") fun startDate(startDate: LocalDate) = apply { this.startDate = startDate } /** A date string to specify the line item's end date in the customer's timezone. */ - @JsonProperty("end_date") fun endDate(endDate: LocalDate) = apply { this.endDate = endDate } /** The number of units on the line item */ - @JsonProperty("quantity") fun quantity(quantity: Double) = apply { this.quantity = quantity } /** The name of the line item. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("unit_config") fun unitConfig(unitConfig: UnitConfig) = apply { this.unitConfig = unitConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): LineItem = LineItem( checkNotNull(startDate) { "`startDate` is required but was not set" }, @@ -730,16 +731,17 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitConfig.Builder::class) @NoAutoDetect class UnitConfig + @JsonCreator private constructor( - private val unitAmount: String?, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Rate per unit of usage */ - @JsonProperty("unit_amount") fun unitAmount(): String? = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing @@ -759,22 +761,20 @@ constructor( @JvmSynthetic internal fun from(unitConfig: UnitConfig) = apply { - this.unitAmount = unitConfig.unitAmount - additionalProperties(unitConfig.additionalProperties) + unitAmount = unitConfig.unitAmount + additionalProperties = unitConfig.additionalProperties.toMutableMap() } /** Rate per unit of usage */ - @JsonProperty("unit_amount") fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -782,6 +782,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitConfig = UnitConfig( checkNotNull(unitAmount) { "`unitAmount` is required but was not set" }, @@ -830,11 +838,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -854,23 +863,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceFetchUpcomingResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceFetchUpcomingResponse.kt index 5651037b..603079a1 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceFetchUpcomingResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceFetchUpcomingResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,56 +30,129 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = InvoiceFetchUpcomingResponse.Builder::class) @NoAutoDetect class InvoiceFetchUpcomingResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val voidedAt: JsonField, - private val paidAt: JsonField, - private val issuedAt: JsonField, - private val scheduledIssueAt: JsonField, - private val autoCollection: JsonField, - private val issueFailedAt: JsonField, - private val syncFailedAt: JsonField, - private val paymentFailedAt: JsonField, - private val paymentStartedAt: JsonField, - private val amountDue: JsonField, - private val createdAt: JsonField, - private val currency: JsonField, - private val customer: JsonField, - private val discount: JsonValue, - private val discounts: JsonField>, - private val dueDate: JsonField, - private val id: JsonField, - private val invoicePdf: JsonField, - private val invoiceNumber: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val lineItems: JsonField>, - private val subscription: JsonField, - private val subtotal: JsonField, - private val total: JsonField, - private val customerBalanceTransactions: JsonField>, - private val status: JsonField, - private val invoiceSource: JsonField, - private val shippingAddress: JsonField, - private val billingAddress: JsonField, - private val hostedInvoiceUrl: JsonField, - private val willAutoIssue: JsonField, - private val eligibleToIssueAt: JsonField, - private val customerTaxId: JsonField, - private val memo: JsonField, - private val creditNotes: JsonField>, - private val paymentAttempts: JsonField>, - private val targetDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("voided_at") + @ExcludeMissing + private val voidedAt: JsonField = JsonMissing.of(), + @JsonProperty("paid_at") + @ExcludeMissing + private val paidAt: JsonField = JsonMissing.of(), + @JsonProperty("issued_at") + @ExcludeMissing + private val issuedAt: JsonField = JsonMissing.of(), + @JsonProperty("scheduled_issue_at") + @ExcludeMissing + private val scheduledIssueAt: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("issue_failed_at") + @ExcludeMissing + private val issueFailedAt: JsonField = JsonMissing.of(), + @JsonProperty("sync_failed_at") + @ExcludeMissing + private val syncFailedAt: JsonField = JsonMissing.of(), + @JsonProperty("payment_failed_at") + @ExcludeMissing + private val paymentFailedAt: JsonField = JsonMissing.of(), + @JsonProperty("payment_started_at") + @ExcludeMissing + private val paymentStartedAt: JsonField = JsonMissing.of(), + @JsonProperty("amount_due") + @ExcludeMissing + private val amountDue: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("discount") @ExcludeMissing private val discount: JsonValue = JsonMissing.of(), + @JsonProperty("discounts") + @ExcludeMissing + private val discounts: JsonField> = JsonMissing.of(), + @JsonProperty("due_date") + @ExcludeMissing + private val dueDate: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("invoice_pdf") + @ExcludeMissing + private val invoicePdf: JsonField = JsonMissing.of(), + @JsonProperty("invoice_number") + @ExcludeMissing + private val invoiceNumber: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("line_items") + @ExcludeMissing + private val lineItems: JsonField> = JsonMissing.of(), + @JsonProperty("subscription") + @ExcludeMissing + private val subscription: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("total") @ExcludeMissing private val total: JsonField = JsonMissing.of(), + @JsonProperty("customer_balance_transactions") + @ExcludeMissing + private val customerBalanceTransactions: JsonField> = + JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("invoice_source") + @ExcludeMissing + private val invoiceSource: JsonField = JsonMissing.of(), + @JsonProperty("shipping_address") + @ExcludeMissing + private val shippingAddress: JsonField = JsonMissing.of(), + @JsonProperty("billing_address") + @ExcludeMissing + private val billingAddress: JsonField = JsonMissing.of(), + @JsonProperty("hosted_invoice_url") + @ExcludeMissing + private val hostedInvoiceUrl: JsonField = JsonMissing.of(), + @JsonProperty("will_auto_issue") + @ExcludeMissing + private val willAutoIssue: JsonField = JsonMissing.of(), + @JsonProperty("eligible_to_issue_at") + @ExcludeMissing + private val eligibleToIssueAt: JsonField = JsonMissing.of(), + @JsonProperty("customer_tax_id") + @ExcludeMissing + private val customerTaxId: JsonField = JsonMissing.of(), + @JsonProperty("memo") @ExcludeMissing private val memo: JsonField = JsonMissing.of(), + @JsonProperty("credit_notes") + @ExcludeMissing + private val creditNotes: JsonField> = JsonMissing.of(), + @JsonProperty("payment_attempts") + @ExcludeMissing + private val paymentAttempts: JsonField> = JsonMissing.of(), + @JsonProperty("target_date") + @ExcludeMissing + private val targetDate: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -611,6 +685,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoiceFetchUpcomingResponse = apply { if (!validated) { metadata().validate() @@ -712,49 +788,48 @@ private constructor( @JvmSynthetic internal fun from(invoiceFetchUpcomingResponse: InvoiceFetchUpcomingResponse) = apply { - this.metadata = invoiceFetchUpcomingResponse.metadata - this.voidedAt = invoiceFetchUpcomingResponse.voidedAt - this.paidAt = invoiceFetchUpcomingResponse.paidAt - this.issuedAt = invoiceFetchUpcomingResponse.issuedAt - this.scheduledIssueAt = invoiceFetchUpcomingResponse.scheduledIssueAt - this.autoCollection = invoiceFetchUpcomingResponse.autoCollection - this.issueFailedAt = invoiceFetchUpcomingResponse.issueFailedAt - this.syncFailedAt = invoiceFetchUpcomingResponse.syncFailedAt - this.paymentFailedAt = invoiceFetchUpcomingResponse.paymentFailedAt - this.paymentStartedAt = invoiceFetchUpcomingResponse.paymentStartedAt - this.amountDue = invoiceFetchUpcomingResponse.amountDue - this.createdAt = invoiceFetchUpcomingResponse.createdAt - this.currency = invoiceFetchUpcomingResponse.currency - this.customer = invoiceFetchUpcomingResponse.customer - this.discount = invoiceFetchUpcomingResponse.discount - this.discounts = invoiceFetchUpcomingResponse.discounts - this.dueDate = invoiceFetchUpcomingResponse.dueDate - this.id = invoiceFetchUpcomingResponse.id - this.invoicePdf = invoiceFetchUpcomingResponse.invoicePdf - this.invoiceNumber = invoiceFetchUpcomingResponse.invoiceNumber - this.minimum = invoiceFetchUpcomingResponse.minimum - this.minimumAmount = invoiceFetchUpcomingResponse.minimumAmount - this.maximum = invoiceFetchUpcomingResponse.maximum - this.maximumAmount = invoiceFetchUpcomingResponse.maximumAmount - this.lineItems = invoiceFetchUpcomingResponse.lineItems - this.subscription = invoiceFetchUpcomingResponse.subscription - this.subtotal = invoiceFetchUpcomingResponse.subtotal - this.total = invoiceFetchUpcomingResponse.total - this.customerBalanceTransactions = - invoiceFetchUpcomingResponse.customerBalanceTransactions - this.status = invoiceFetchUpcomingResponse.status - this.invoiceSource = invoiceFetchUpcomingResponse.invoiceSource - this.shippingAddress = invoiceFetchUpcomingResponse.shippingAddress - this.billingAddress = invoiceFetchUpcomingResponse.billingAddress - this.hostedInvoiceUrl = invoiceFetchUpcomingResponse.hostedInvoiceUrl - this.willAutoIssue = invoiceFetchUpcomingResponse.willAutoIssue - this.eligibleToIssueAt = invoiceFetchUpcomingResponse.eligibleToIssueAt - this.customerTaxId = invoiceFetchUpcomingResponse.customerTaxId - this.memo = invoiceFetchUpcomingResponse.memo - this.creditNotes = invoiceFetchUpcomingResponse.creditNotes - this.paymentAttempts = invoiceFetchUpcomingResponse.paymentAttempts - this.targetDate = invoiceFetchUpcomingResponse.targetDate - additionalProperties(invoiceFetchUpcomingResponse.additionalProperties) + metadata = invoiceFetchUpcomingResponse.metadata + voidedAt = invoiceFetchUpcomingResponse.voidedAt + paidAt = invoiceFetchUpcomingResponse.paidAt + issuedAt = invoiceFetchUpcomingResponse.issuedAt + scheduledIssueAt = invoiceFetchUpcomingResponse.scheduledIssueAt + autoCollection = invoiceFetchUpcomingResponse.autoCollection + issueFailedAt = invoiceFetchUpcomingResponse.issueFailedAt + syncFailedAt = invoiceFetchUpcomingResponse.syncFailedAt + paymentFailedAt = invoiceFetchUpcomingResponse.paymentFailedAt + paymentStartedAt = invoiceFetchUpcomingResponse.paymentStartedAt + amountDue = invoiceFetchUpcomingResponse.amountDue + createdAt = invoiceFetchUpcomingResponse.createdAt + currency = invoiceFetchUpcomingResponse.currency + customer = invoiceFetchUpcomingResponse.customer + discount = invoiceFetchUpcomingResponse.discount + discounts = invoiceFetchUpcomingResponse.discounts + dueDate = invoiceFetchUpcomingResponse.dueDate + id = invoiceFetchUpcomingResponse.id + invoicePdf = invoiceFetchUpcomingResponse.invoicePdf + invoiceNumber = invoiceFetchUpcomingResponse.invoiceNumber + minimum = invoiceFetchUpcomingResponse.minimum + minimumAmount = invoiceFetchUpcomingResponse.minimumAmount + maximum = invoiceFetchUpcomingResponse.maximum + maximumAmount = invoiceFetchUpcomingResponse.maximumAmount + lineItems = invoiceFetchUpcomingResponse.lineItems + subscription = invoiceFetchUpcomingResponse.subscription + subtotal = invoiceFetchUpcomingResponse.subtotal + total = invoiceFetchUpcomingResponse.total + customerBalanceTransactions = invoiceFetchUpcomingResponse.customerBalanceTransactions + status = invoiceFetchUpcomingResponse.status + invoiceSource = invoiceFetchUpcomingResponse.invoiceSource + shippingAddress = invoiceFetchUpcomingResponse.shippingAddress + billingAddress = invoiceFetchUpcomingResponse.billingAddress + hostedInvoiceUrl = invoiceFetchUpcomingResponse.hostedInvoiceUrl + willAutoIssue = invoiceFetchUpcomingResponse.willAutoIssue + eligibleToIssueAt = invoiceFetchUpcomingResponse.eligibleToIssueAt + customerTaxId = invoiceFetchUpcomingResponse.customerTaxId + memo = invoiceFetchUpcomingResponse.memo + creditNotes = invoiceFetchUpcomingResponse.creditNotes + paymentAttempts = invoiceFetchUpcomingResponse.paymentAttempts + targetDate = invoiceFetchUpcomingResponse.targetDate + additionalProperties = invoiceFetchUpcomingResponse.additionalProperties.toMutableMap() } /** @@ -769,8 +844,6 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } /** @@ -783,8 +856,6 @@ private constructor( * If the invoice has a status of `void`, this gives a timestamp when the invoice was * voided. */ - @JsonProperty("voided_at") - @ExcludeMissing fun voidedAt(voidedAt: JsonField) = apply { this.voidedAt = voidedAt } /** @@ -795,8 +866,6 @@ private constructor( /** * If the invoice has a status of `paid`, this gives a timestamp when the invoice was paid. */ - @JsonProperty("paid_at") - @ExcludeMissing fun paidAt(paidAt: JsonField) = apply { this.paidAt = paidAt } /** @@ -809,8 +878,6 @@ private constructor( * If the invoice has been issued, this will be the time it transitioned to `issued` (even * if it is now in a different state.) */ - @JsonProperty("issued_at") - @ExcludeMissing fun issuedAt(issuedAt: JsonField) = apply { this.issuedAt = issuedAt } /** @@ -824,8 +891,6 @@ private constructor( * If the invoice is in draft, this timestamp will reflect when the invoice is scheduled to * be issued. */ - @JsonProperty("scheduled_issue_at") - @ExcludeMissing fun scheduledIssueAt(scheduledIssueAt: JsonField) = apply { this.scheduledIssueAt = scheduledIssueAt } @@ -833,8 +898,6 @@ private constructor( fun autoCollection(autoCollection: AutoCollection) = autoCollection(JsonField.of(autoCollection)) - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -850,8 +913,6 @@ private constructor( * If the invoice failed to issue, this will be the last time it failed to issue (even if it * is now in a different state.) */ - @JsonProperty("issue_failed_at") - @ExcludeMissing fun issueFailedAt(issueFailedAt: JsonField) = apply { this.issueFailedAt = issueFailedAt } @@ -866,8 +927,6 @@ private constructor( * If the invoice failed to sync, this will be the last time an external invoicing provider * sync was attempted. This field will always be `null` for invoices using Orb Invoicing. */ - @JsonProperty("sync_failed_at") - @ExcludeMissing fun syncFailedAt(syncFailedAt: JsonField) = apply { this.syncFailedAt = syncFailedAt } @@ -883,8 +942,6 @@ private constructor( * If payment was attempted on this invoice but failed, this will be the time of the most * recent attempt. */ - @JsonProperty("payment_failed_at") - @ExcludeMissing fun paymentFailedAt(paymentFailedAt: JsonField) = apply { this.paymentFailedAt = paymentFailedAt } @@ -902,8 +959,6 @@ private constructor( * attempt. This field is especially useful for delayed-notification payment mechanisms * (like bank transfers), where payment can take 3 days or more. */ - @JsonProperty("payment_started_at") - @ExcludeMissing fun paymentStartedAt(paymentStartedAt: JsonField) = apply { this.paymentStartedAt = paymentStartedAt } @@ -918,30 +973,22 @@ private constructor( * This is the final amount required to be charged to the customer and reflects the * application of the customer balance to the `total` of the invoice. */ - @JsonProperty("amount_due") - @ExcludeMissing fun amountDue(amountDue: JsonField) = apply { this.amountDue = amountDue } /** The creation time of the resource in Orb. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The creation time of the resource in Orb. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** An ISO 4217 currency string or `credits` */ fun currency(currency: String) = currency(JsonField.of(currency)) /** An ISO 4217 currency string or `credits` */ - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun customer(customer: Customer) = customer(JsonField.of(customer)) - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -949,14 +996,10 @@ private constructor( * first discount in the list will be returned. If the list is empty, `None` will be * returned. */ - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonValue) = apply { this.discount = discount } fun discounts(discounts: List) = discounts(JsonField.of(discounts)) - @JsonProperty("discounts") - @ExcludeMissing fun discounts(discounts: JsonField>) = apply { this.discounts = discounts } @@ -965,20 +1008,16 @@ private constructor( fun dueDate(dueDate: OffsetDateTime) = dueDate(JsonField.of(dueDate)) /** When the invoice payment is due. */ - @JsonProperty("due_date") - @ExcludeMissing fun dueDate(dueDate: JsonField) = apply { this.dueDate = dueDate } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** The link to download the PDF representation of the `Invoice`. */ fun invoicePdf(invoicePdf: String) = invoicePdf(JsonField.of(invoicePdf)) /** The link to download the PDF representation of the `Invoice`. */ - @JsonProperty("invoice_pdf") - @ExcludeMissing fun invoicePdf(invoicePdf: JsonField) = apply { this.invoicePdf = invoicePdf } /** @@ -991,36 +1030,26 @@ private constructor( * Automatically generated invoice number to help track and reconcile invoices. Invoice * numbers have a prefix such as `RFOBWG`. These can be sequential per account or customer. */ - @JsonProperty("invoice_number") - @ExcludeMissing fun invoiceNumber(invoiceNumber: JsonField) = apply { this.invoiceNumber = invoiceNumber } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -1029,14 +1058,10 @@ private constructor( fun lineItems(lineItems: List) = lineItems(JsonField.of(lineItems)) /** The breakdown of prices in this invoice. */ - @JsonProperty("line_items") - @ExcludeMissing fun lineItems(lineItems: JsonField>) = apply { this.lineItems = lineItems } fun subscription(subscription: Subscription) = subscription(JsonField.of(subscription)) - @JsonProperty("subscription") - @ExcludeMissing fun subscription(subscription: JsonField) = apply { this.subscription = subscription } @@ -1045,38 +1070,28 @@ private constructor( fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** The total before any discounts and minimums are applied. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** The total after any minimums and discounts have been applied. */ fun total(total: String) = total(JsonField.of(total)) /** The total after any minimums and discounts have been applied. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } fun customerBalanceTransactions( customerBalanceTransactions: List ) = customerBalanceTransactions(JsonField.of(customerBalanceTransactions)) - @JsonProperty("customer_balance_transactions") - @ExcludeMissing fun customerBalanceTransactions( customerBalanceTransactions: JsonField> ) = apply { this.customerBalanceTransactions = customerBalanceTransactions } fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun invoiceSource(invoiceSource: InvoiceSource) = invoiceSource(JsonField.of(invoiceSource)) - @JsonProperty("invoice_source") - @ExcludeMissing fun invoiceSource(invoiceSource: JsonField) = apply { this.invoiceSource = invoiceSource } @@ -1084,8 +1099,6 @@ private constructor( fun shippingAddress(shippingAddress: ShippingAddress) = shippingAddress(JsonField.of(shippingAddress)) - @JsonProperty("shipping_address") - @ExcludeMissing fun shippingAddress(shippingAddress: JsonField) = apply { this.shippingAddress = shippingAddress } @@ -1093,8 +1106,6 @@ private constructor( fun billingAddress(billingAddress: BillingAddress) = billingAddress(JsonField.of(billingAddress)) - @JsonProperty("billing_address") - @ExcludeMissing fun billingAddress(billingAddress: JsonField) = apply { this.billingAddress = billingAddress } @@ -1110,8 +1121,6 @@ private constructor( * A URL for the customer-facing invoice portal. This URL expires 30 days after the * invoice's due date, or 60 days after being re-generated through the UI. */ - @JsonProperty("hosted_invoice_url") - @ExcludeMissing fun hostedInvoiceUrl(hostedInvoiceUrl: JsonField) = apply { this.hostedInvoiceUrl = hostedInvoiceUrl } @@ -1126,8 +1135,6 @@ private constructor( * This is true if the invoice will be automatically issued in the future, and false * otherwise. */ - @JsonProperty("will_auto_issue") - @ExcludeMissing fun willAutoIssue(willAutoIssue: JsonField) = apply { this.willAutoIssue = willAutoIssue } @@ -1145,8 +1152,6 @@ private constructor( * eligible to be issued, otherwise it will be `null`. If `auto-issue` is true, the invoice * will automatically begin issuing at this time. */ - @JsonProperty("eligible_to_issue_at") - @ExcludeMissing fun eligibleToIssueAt(eligibleToIssueAt: JsonField) = apply { this.eligibleToIssueAt = eligibleToIssueAt } @@ -1365,8 +1370,6 @@ private constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonProperty("customer_tax_id") - @ExcludeMissing fun customerTaxId(customerTaxId: JsonField) = apply { this.customerTaxId = customerTaxId } @@ -1375,16 +1378,12 @@ private constructor( fun memo(memo: String) = memo(JsonField.of(memo)) /** Free-form text which is available on the invoice PDF and the Orb invoice portal. */ - @JsonProperty("memo") - @ExcludeMissing fun memo(memo: JsonField) = apply { this.memo = memo } /** A list of credit notes associated with the invoice */ fun creditNotes(creditNotes: List) = creditNotes(JsonField.of(creditNotes)) /** A list of credit notes associated with the invoice */ - @JsonProperty("credit_notes") - @ExcludeMissing fun creditNotes(creditNotes: JsonField>) = apply { this.creditNotes = creditNotes } @@ -1394,8 +1393,6 @@ private constructor( paymentAttempts(JsonField.of(paymentAttempts)) /** A list of payment attempts associated with the invoice */ - @JsonProperty("payment_attempts") - @ExcludeMissing fun paymentAttempts(paymentAttempts: JsonField>) = apply { this.paymentAttempts = paymentAttempts } @@ -1404,26 +1401,29 @@ private constructor( fun targetDate(targetDate: OffsetDateTime) = targetDate(JsonField.of(targetDate)) /** The scheduled date of the invoice */ - @JsonProperty("target_date") - @ExcludeMissing fun targetDate(targetDate: JsonField) = apply { this.targetDate = targetDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceFetchUpcomingResponse = InvoiceFetchUpcomingResponse( metadata, @@ -1471,19 +1471,26 @@ private constructor( ) } - @JsonDeserialize(builder = AutoCollection.Builder::class) @NoAutoDetect class AutoCollection + @JsonCreator private constructor( - private val nextAttemptAt: JsonField, - private val previouslyAttemptedAt: JsonField, - private val enabled: JsonField, - private val numAttempts: JsonField, - private val additionalProperties: Map, + @JsonProperty("next_attempt_at") + @ExcludeMissing + private val nextAttemptAt: JsonField = JsonMissing.of(), + @JsonProperty("previously_attempted_at") + @ExcludeMissing + private val previouslyAttemptedAt: JsonField = JsonMissing.of(), + @JsonProperty("enabled") + @ExcludeMissing + private val enabled: JsonField = JsonMissing.of(), + @JsonProperty("num_attempts") + @ExcludeMissing + private val numAttempts: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * If the invoice is scheduled for auto-collection, this field will reflect when the next * attempt will occur. If dunning has been exhausted, or auto-collection is not enabled for @@ -1539,6 +1546,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AutoCollection = apply { if (!validated) { nextAttemptAt() @@ -1566,11 +1575,11 @@ private constructor( @JvmSynthetic internal fun from(autoCollection: AutoCollection) = apply { - this.nextAttemptAt = autoCollection.nextAttemptAt - this.previouslyAttemptedAt = autoCollection.previouslyAttemptedAt - this.enabled = autoCollection.enabled - this.numAttempts = autoCollection.numAttempts - additionalProperties(autoCollection.additionalProperties) + nextAttemptAt = autoCollection.nextAttemptAt + previouslyAttemptedAt = autoCollection.previouslyAttemptedAt + enabled = autoCollection.enabled + numAttempts = autoCollection.numAttempts + additionalProperties = autoCollection.additionalProperties.toMutableMap() } /** @@ -1586,8 +1595,6 @@ private constructor( * next attempt will occur. If dunning has been exhausted, or auto-collection is not * enabled for this invoice, this field will be `null`. */ - @JsonProperty("next_attempt_at") - @ExcludeMissing fun nextAttemptAt(nextAttemptAt: JsonField) = apply { this.nextAttemptAt = nextAttemptAt } @@ -1611,8 +1618,6 @@ private constructor( * dunning has been exhausted (`previously_attempted_at` is non-null, but * `next_attempt_time` is null). */ - @JsonProperty("previously_attempted_at") - @ExcludeMissing fun previouslyAttemptedAt(previouslyAttemptedAt: JsonField) = apply { this.previouslyAttemptedAt = previouslyAttemptedAt } @@ -1621,32 +1626,33 @@ private constructor( fun enabled(enabled: Boolean) = enabled(JsonField.of(enabled)) /** True only if auto-collection is enabled for this invoice. */ - @JsonProperty("enabled") - @ExcludeMissing fun enabled(enabled: JsonField) = apply { this.enabled = enabled } /** Number of auto-collection payment attempts. */ fun numAttempts(numAttempts: Long) = numAttempts(JsonField.of(numAttempts)) /** Number of auto-collection payment attempts. */ - @JsonProperty("num_attempts") - @ExcludeMissing fun numAttempts(numAttempts: JsonField) = apply { this.numAttempts = numAttempts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AutoCollection = AutoCollection( nextAttemptAt, @@ -1675,21 +1681,32 @@ private constructor( "AutoCollection{nextAttemptAt=$nextAttemptAt, previouslyAttemptedAt=$previouslyAttemptedAt, enabled=$enabled, numAttempts=$numAttempts, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingAddress.Builder::class) @NoAutoDetect class BillingAddress + @JsonCreator private constructor( - private val line1: JsonField, - private val line2: JsonField, - private val city: JsonField, - private val state: JsonField, - private val postalCode: JsonField, - private val country: JsonField, - private val additionalProperties: Map, + @JsonProperty("line1") + @ExcludeMissing + private val line1: JsonField = JsonMissing.of(), + @JsonProperty("line2") + @ExcludeMissing + private val line2: JsonField = JsonMissing.of(), + @JsonProperty("city") + @ExcludeMissing + private val city: JsonField = JsonMissing.of(), + @JsonProperty("state") + @ExcludeMissing + private val state: JsonField = JsonMissing.of(), + @JsonProperty("postal_code") + @ExcludeMissing + private val postalCode: JsonField = JsonMissing.of(), + @JsonProperty("country") + @ExcludeMissing + private val country: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun line1(): Optional = Optional.ofNullable(line1.getNullable("line1")) fun line2(): Optional = Optional.ofNullable(line2.getNullable("line2")) @@ -1719,6 +1736,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingAddress = apply { if (!validated) { line1() @@ -1750,65 +1769,58 @@ private constructor( @JvmSynthetic internal fun from(billingAddress: BillingAddress) = apply { - this.line1 = billingAddress.line1 - this.line2 = billingAddress.line2 - this.city = billingAddress.city - this.state = billingAddress.state - this.postalCode = billingAddress.postalCode - this.country = billingAddress.country - additionalProperties(billingAddress.additionalProperties) + line1 = billingAddress.line1 + line2 = billingAddress.line2 + city = billingAddress.city + state = billingAddress.state + postalCode = billingAddress.postalCode + country = billingAddress.country + additionalProperties = billingAddress.additionalProperties.toMutableMap() } fun line1(line1: String) = line1(JsonField.of(line1)) - @JsonProperty("line1") - @ExcludeMissing fun line1(line1: JsonField) = apply { this.line1 = line1 } fun line2(line2: String) = line2(JsonField.of(line2)) - @JsonProperty("line2") - @ExcludeMissing fun line2(line2: JsonField) = apply { this.line2 = line2 } fun city(city: String) = city(JsonField.of(city)) - @JsonProperty("city") - @ExcludeMissing fun city(city: JsonField) = apply { this.city = city } fun state(state: String) = state(JsonField.of(state)) - @JsonProperty("state") - @ExcludeMissing fun state(state: JsonField) = apply { this.state = state } fun postalCode(postalCode: String) = postalCode(JsonField.of(postalCode)) - @JsonProperty("postal_code") - @ExcludeMissing fun postalCode(postalCode: JsonField) = apply { this.postalCode = postalCode } fun country(country: String) = country(JsonField.of(country)) - @JsonProperty("country") - @ExcludeMissing fun country(country: JsonField) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingAddress = BillingAddress( line1, @@ -1839,22 +1851,33 @@ private constructor( "BillingAddress{line1=$line1, line2=$line2, city=$city, state=$state, postalCode=$postalCode, country=$country, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = CreditNote.Builder::class) @NoAutoDetect class CreditNote + @JsonCreator private constructor( - private val id: JsonField, - private val creditNoteNumber: JsonField, - private val reason: JsonField, - private val total: JsonField, - private val voidedAt: JsonField, - private val type: JsonField, - private val memo: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("credit_note_number") + @ExcludeMissing + private val creditNoteNumber: JsonField = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("total") + @ExcludeMissing + private val total: JsonField = JsonMissing.of(), + @JsonProperty("voided_at") + @ExcludeMissing + private val voidedAt: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonProperty("memo") + @ExcludeMissing + private val memo: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun creditNoteNumber(): String = creditNoteNumber.getRequired("credit_note_number") @@ -1900,6 +1923,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditNote = apply { if (!validated) { id() @@ -1933,41 +1958,33 @@ private constructor( @JvmSynthetic internal fun from(creditNote: CreditNote) = apply { - this.id = creditNote.id - this.creditNoteNumber = creditNote.creditNoteNumber - this.reason = creditNote.reason - this.total = creditNote.total - this.voidedAt = creditNote.voidedAt - this.type = creditNote.type - this.memo = creditNote.memo - additionalProperties(creditNote.additionalProperties) + id = creditNote.id + creditNoteNumber = creditNote.creditNoteNumber + reason = creditNote.reason + total = creditNote.total + voidedAt = creditNote.voidedAt + type = creditNote.type + memo = creditNote.memo + additionalProperties = creditNote.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun creditNoteNumber(creditNoteNumber: String) = creditNoteNumber(JsonField.of(creditNoteNumber)) - @JsonProperty("credit_note_number") - @ExcludeMissing fun creditNoteNumber(creditNoteNumber: JsonField) = apply { this.creditNoteNumber = creditNoteNumber } fun reason(reason: String) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun total(total: String) = total(JsonField.of(total)) - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } /** @@ -1980,38 +1997,37 @@ private constructor( * If the credit note has a status of `void`, this gives a timestamp when the credit * note was voided. */ - @JsonProperty("voided_at") - @ExcludeMissing fun voidedAt(voidedAt: JsonField) = apply { this.voidedAt = voidedAt } fun type(type: String) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } /** An optional memo supplied on the credit note. */ fun memo(memo: String) = memo(JsonField.of(memo)) /** An optional memo supplied on the credit note. */ - @JsonProperty("memo") - @ExcludeMissing fun memo(memo: JsonField) = apply { this.memo = memo } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditNote = CreditNote( id, @@ -2043,17 +2059,18 @@ private constructor( "CreditNote{id=$id, creditNoteNumber=$creditNoteNumber, reason=$reason, total=$total, voidedAt=$voidedAt, type=$type, memo=$memo, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Customer.Builder::class) @NoAutoDetect class Customer + @JsonCreator private constructor( - private val id: JsonField, - private val externalCustomerId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_customer_id") + @ExcludeMissing + private val externalCustomerId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun externalCustomerId(): Optional = @@ -2069,6 +2086,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Customer = apply { if (!validated) { id() @@ -2092,40 +2111,41 @@ private constructor( @JvmSynthetic internal fun from(customer: Customer) = apply { - this.id = customer.id - this.externalCustomerId = customer.externalCustomerId - additionalProperties(customer.additionalProperties) + id = customer.id + externalCustomerId = customer.externalCustomerId + additionalProperties = customer.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun externalCustomerId(externalCustomerId: String) = externalCustomerId(JsonField.of(externalCustomerId)) - @JsonProperty("external_customer_id") - @ExcludeMissing fun externalCustomerId(externalCustomerId: JsonField) = apply { this.externalCustomerId = externalCustomerId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Customer = Customer( id, @@ -2152,25 +2172,40 @@ private constructor( "Customer{id=$id, externalCustomerId=$externalCustomerId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = CustomerBalanceTransaction.Builder::class) @NoAutoDetect class CustomerBalanceTransaction + @JsonCreator private constructor( - private val id: JsonField, - private val createdAt: JsonField, - private val startingBalance: JsonField, - private val endingBalance: JsonField, - private val amount: JsonField, - private val action: JsonField, - private val description: JsonField, - private val invoice: JsonField, - private val type: JsonField, - private val creditNote: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("starting_balance") + @ExcludeMissing + private val startingBalance: JsonField = JsonMissing.of(), + @JsonProperty("ending_balance") + @ExcludeMissing + private val endingBalance: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("action") + @ExcludeMissing + private val action: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("invoice") + @ExcludeMissing + private val invoice: JsonField = JsonMissing.of(), + @JsonProperty("type") @ExcludeMissing private val type: JsonField = JsonMissing.of(), + @JsonProperty("credit_note") + @ExcludeMissing + private val creditNote: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** A unique id for this transaction. */ fun id(): String = id.getRequired("id") @@ -2241,6 +2276,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerBalanceTransaction = apply { if (!validated) { id() @@ -2280,33 +2317,30 @@ private constructor( @JvmSynthetic internal fun from(customerBalanceTransaction: CustomerBalanceTransaction) = apply { - this.id = customerBalanceTransaction.id - this.createdAt = customerBalanceTransaction.createdAt - this.startingBalance = customerBalanceTransaction.startingBalance - this.endingBalance = customerBalanceTransaction.endingBalance - this.amount = customerBalanceTransaction.amount - this.action = customerBalanceTransaction.action - this.description = customerBalanceTransaction.description - this.invoice = customerBalanceTransaction.invoice - this.type = customerBalanceTransaction.type - this.creditNote = customerBalanceTransaction.creditNote - additionalProperties(customerBalanceTransaction.additionalProperties) + id = customerBalanceTransaction.id + createdAt = customerBalanceTransaction.createdAt + startingBalance = customerBalanceTransaction.startingBalance + endingBalance = customerBalanceTransaction.endingBalance + amount = customerBalanceTransaction.amount + action = customerBalanceTransaction.action + description = customerBalanceTransaction.description + invoice = customerBalanceTransaction.invoice + type = customerBalanceTransaction.type + creditNote = customerBalanceTransaction.creditNote + additionalProperties = + customerBalanceTransaction.additionalProperties.toMutableMap() } /** A unique id for this transaction. */ fun id(id: String) = id(JsonField.of(id)) /** A unique id for this transaction. */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** The creation time of this transaction. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The creation time of this transaction. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } @@ -2322,8 +2356,6 @@ private constructor( * The original value of the customer's balance prior to the transaction, in the * customer's currency. */ - @JsonProperty("starting_balance") - @ExcludeMissing fun startingBalance(startingBalance: JsonField) = apply { this.startingBalance = startingBalance } @@ -2338,8 +2370,6 @@ private constructor( * The new value of the customer's balance prior to the transaction, in the customer's * currency. */ - @JsonProperty("ending_balance") - @ExcludeMissing fun endingBalance(endingBalance: JsonField) = apply { this.endingBalance = endingBalance } @@ -2348,60 +2378,53 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The value of the amount changed in the transaction. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun action(action: Action) = action(JsonField.of(action)) - @JsonProperty("action") - @ExcludeMissing fun action(action: JsonField) = apply { this.action = action } /** An optional description provided for manual customer balance adjustments. */ fun description(description: String) = description(JsonField.of(description)) /** An optional description provided for manual customer balance adjustments. */ - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun invoice(invoice: Invoice) = invoice(JsonField.of(invoice)) - @JsonProperty("invoice") - @ExcludeMissing fun invoice(invoice: JsonField) = apply { this.invoice = invoice } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun creditNote(creditNote: CreditNote) = creditNote(JsonField.of(creditNote)) - @JsonProperty("credit_note") - @ExcludeMissing fun creditNote(creditNote: JsonField) = apply { this.creditNote = creditNote } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerBalanceTransaction = CustomerBalanceTransaction( id, @@ -2511,16 +2534,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditNote.Builder::class) @NoAutoDetect class CreditNote + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The id of the Credit note */ fun id(): String = id.getRequired("id") @@ -2531,6 +2555,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditNote = apply { if (!validated) { id() @@ -2552,26 +2578,23 @@ private constructor( @JvmSynthetic internal fun from(creditNote: CreditNote) = apply { - this.id = creditNote.id - additionalProperties(creditNote.additionalProperties) + id = creditNote.id + additionalProperties = creditNote.additionalProperties.toMutableMap() } /** The id of the Credit note */ fun id(id: String) = id(JsonField.of(id)) /** The id of the Credit note */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2579,6 +2602,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditNote = CreditNote(id, additionalProperties.toImmutable()) } @@ -2600,16 +2631,17 @@ private constructor( "CreditNote{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Invoice.Builder::class) @NoAutoDetect class Invoice + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The Invoice id */ fun id(): String = id.getRequired("id") @@ -2620,6 +2652,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Invoice = apply { if (!validated) { id() @@ -2641,26 +2675,23 @@ private constructor( @JvmSynthetic internal fun from(invoice: Invoice) = apply { - this.id = invoice.id - additionalProperties(invoice.additionalProperties) + id = invoice.id + additionalProperties = invoice.additionalProperties.toMutableMap() } /** The Invoice id */ fun id(id: String) = id(JsonField.of(id)) /** The Invoice id */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2668,6 +2699,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Invoice = Invoice(id, additionalProperties.toImmutable()) } @@ -2869,18 +2908,21 @@ private constructor( * |Venezuela |`ve_rif` |Venezuelan RIF Number | * |Vietnam |`vn_tin` |Vietnamese Tax ID Number | */ - @JsonDeserialize(builder = CustomerTaxId.Builder::class) @NoAutoDetect class CustomerTaxId + @JsonCreator private constructor( - private val country: JsonField, - private val type: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("country") + @ExcludeMissing + private val country: JsonField = JsonMissing.of(), + @JsonProperty("type") @ExcludeMissing private val type: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun country(): Country = country.getRequired("country") fun type(): Type = type.getRequired("type") @@ -2897,6 +2939,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CustomerTaxId = apply { if (!validated) { country() @@ -2922,44 +2966,43 @@ private constructor( @JvmSynthetic internal fun from(customerTaxId: CustomerTaxId) = apply { - this.country = customerTaxId.country - this.type = customerTaxId.type - this.value = customerTaxId.value - additionalProperties(customerTaxId.additionalProperties) + country = customerTaxId.country + type = customerTaxId.type + value = customerTaxId.value + additionalProperties = customerTaxId.additionalProperties.toMutableMap() } fun country(country: Country) = country(JsonField.of(country)) - @JsonProperty("country") - @ExcludeMissing fun country(country: JsonField) = apply { this.country = country } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun value(value: String) = value(JsonField.of(value)) - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CustomerTaxId = CustomerTaxId( country, @@ -4034,31 +4077,60 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = LineItem.Builder::class) @NoAutoDetect class LineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val discount: JsonField, - private val endDate: JsonField, - private val grouping: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val startDate: JsonField, - private val subtotal: JsonField, - private val subLineItems: JsonField>, - private val taxAmounts: JsonField>, - private val id: JsonField, - private val price: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("sub_line_items") + @ExcludeMissing + private val subLineItems: JsonField> = JsonMissing.of(), + @JsonProperty("tax_amounts") + @ExcludeMissing + private val taxAmounts: JsonField> = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The final amount after any discounts or minimums. */ fun amount(): String = amount.getRequired("amount") @@ -4623,6 +4695,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): LineItem = apply { if (!validated) { amount() @@ -4674,45 +4748,39 @@ private constructor( @JvmSynthetic internal fun from(lineItem: LineItem) = apply { - this.amount = lineItem.amount - this.discount = lineItem.discount - this.endDate = lineItem.endDate - this.grouping = lineItem.grouping - this.minimum = lineItem.minimum - this.minimumAmount = lineItem.minimumAmount - this.maximum = lineItem.maximum - this.maximumAmount = lineItem.maximumAmount - this.name = lineItem.name - this.quantity = lineItem.quantity - this.startDate = lineItem.startDate - this.subtotal = lineItem.subtotal - this.subLineItems = lineItem.subLineItems - this.taxAmounts = lineItem.taxAmounts - this.id = lineItem.id - this.price = lineItem.price - additionalProperties(lineItem.additionalProperties) + amount = lineItem.amount + discount = lineItem.discount + endDate = lineItem.endDate + grouping = lineItem.grouping + minimum = lineItem.minimum + minimumAmount = lineItem.minimumAmount + maximum = lineItem.maximum + maximumAmount = lineItem.maximumAmount + name = lineItem.name + quantity = lineItem.quantity + startDate = lineItem.startDate + subtotal = lineItem.subtotal + subLineItems = lineItem.subLineItems + taxAmounts = lineItem.taxAmounts + id = lineItem.id + price = lineItem.price + additionalProperties = lineItem.additionalProperties.toMutableMap() } /** The final amount after any discounts or minimums. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The final amount after any discounts or minimums. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } /** The end date of the range of time applied for this line item's price. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the range of time applied for this line item's price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -4727,34 +4795,24 @@ private constructor( * populated with the key and a value. The `amount` and `subtotal` will be the values * for this particular grouping. */ - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -4763,22 +4821,16 @@ private constructor( fun name(name: String) = name(JsonField.of(name)) /** The name of the price associated with this line item. */ - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } /** The start date of the range of time applied for this line item's price. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the range of time applied for this line item's price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4787,8 +4839,6 @@ private constructor( fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** The line amount before any line item-specific discounts or minimums. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** @@ -4802,8 +4852,6 @@ private constructor( * For complex pricing structures, the line item can be broken down further in * `sub_line_items`. */ - @JsonProperty("sub_line_items") - @ExcludeMissing fun subLineItems(subLineItems: JsonField>) = apply { this.subLineItems = subLineItems } @@ -4818,8 +4866,6 @@ private constructor( * An array of tax rates and their incurred tax amounts. Empty if no tax integration is * configured. */ - @JsonProperty("tax_amounts") - @ExcludeMissing fun taxAmounts(taxAmounts: JsonField>) = apply { this.taxAmounts = taxAmounts } @@ -4828,8 +4874,6 @@ private constructor( fun id(id: String) = id(JsonField.of(id)) /** A unique ID for this line item. */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5290,24 +5334,27 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): LineItem = LineItem( amount, @@ -5330,17 +5377,20 @@ private constructor( ) } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -5366,6 +5416,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -5389,9 +5441,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -5399,8 +5451,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -5416,20 +5466,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5437,6 +5484,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -5463,17 +5518,20 @@ private constructor( "Maximum{maximumAmount=$maximumAmount, appliesToPriceIds=$appliesToPriceIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -5499,6 +5557,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -5522,9 +5582,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -5532,8 +5592,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -5549,20 +5607,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5570,6 +5625,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -5761,21 +5824,32 @@ private constructor( } } - @JsonDeserialize(builder = MatrixSubLineItem.Builder::class) @NoAutoDetect class MatrixSubLineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val grouping: JsonField, - private val type: JsonField, - private val matrixConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonProperty("matrix_config") + @ExcludeMissing + private val matrixConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The total amount for this sub line item. */ fun amount(): String = amount.getRequired("amount") @@ -5807,6 +5881,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixSubLineItem = apply { if (!validated) { amount() @@ -5838,64 +5914,51 @@ private constructor( @JvmSynthetic internal fun from(matrixSubLineItem: MatrixSubLineItem) = apply { - this.amount = matrixSubLineItem.amount - this.name = matrixSubLineItem.name - this.quantity = matrixSubLineItem.quantity - this.grouping = matrixSubLineItem.grouping - this.type = matrixSubLineItem.type - this.matrixConfig = matrixSubLineItem.matrixConfig - additionalProperties(matrixSubLineItem.additionalProperties) + amount = matrixSubLineItem.amount + name = matrixSubLineItem.name + quantity = matrixSubLineItem.quantity + grouping = matrixSubLineItem.grouping + type = matrixSubLineItem.type + matrixConfig = matrixSubLineItem.matrixConfig + additionalProperties = matrixSubLineItem.additionalProperties.toMutableMap() } /** The total amount for this sub line item. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The total amount for this sub line item. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun grouping(grouping: Grouping) = grouping(JsonField.of(grouping)) - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun matrixConfig(matrixConfig: MatrixConfig) = matrixConfig(JsonField.of(matrixConfig)) - @JsonProperty("matrix_config") - @ExcludeMissing fun matrixConfig(matrixConfig: JsonField) = apply { this.matrixConfig = matrixConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5903,6 +5966,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixSubLineItem = MatrixSubLineItem( amount, @@ -5915,17 +5986,20 @@ private constructor( ) } - @JsonDeserialize(builder = Grouping.Builder::class) @NoAutoDetect class Grouping + @JsonCreator private constructor( - private val key: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("key") + @ExcludeMissing + private val key: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun key(): String = key.getRequired("key") /** No value indicates the default group */ @@ -5940,6 +6014,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Grouping = apply { if (!validated) { key() @@ -5964,40 +6040,43 @@ private constructor( @JvmSynthetic internal fun from(grouping: Grouping) = apply { - this.key = grouping.key - this.value = grouping.value - additionalProperties(grouping.additionalProperties) + key = grouping.key + value = grouping.value + additionalProperties = grouping.additionalProperties.toMutableMap() } fun key(key: String) = key(JsonField.of(key)) - @JsonProperty("key") - @ExcludeMissing fun key(key: JsonField) = apply { this.key = key } /** No value indicates the default group */ fun value(value: String) = value(JsonField.of(value)) /** No value indicates the default group */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Grouping = Grouping( key, @@ -6024,16 +6103,17 @@ private constructor( "Grouping{key=$key, value=$value, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimension_values") + @ExcludeMissing + private val dimensionValues: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The ordered dimension values for this line item. */ fun dimensionValues(): List = dimensionValues.getRequired("dimension_values") @@ -6047,6 +6127,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixConfig = apply { if (!validated) { dimensionValues() @@ -6069,8 +6151,8 @@ private constructor( @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensionValues = matrixConfig.dimensionValues - additionalProperties(matrixConfig.additionalProperties) + dimensionValues = matrixConfig.dimensionValues + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** The ordered dimension values for this line item. */ @@ -6078,8 +6160,6 @@ private constructor( dimensionValues(JsonField.of(dimensionValues)) /** The ordered dimension values for this line item. */ - @JsonProperty("dimension_values") - @ExcludeMissing fun dimensionValues(dimensionValues: JsonField>) = apply { this.dimensionValues = dimensionValues } @@ -6087,18 +6167,25 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( dimensionValues.map { it.toImmutable() }, @@ -6194,21 +6281,32 @@ private constructor( "MatrixSubLineItem{amount=$amount, name=$name, quantity=$quantity, grouping=$grouping, type=$type, matrixConfig=$matrixConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TierSubLineItem.Builder::class) @NoAutoDetect class TierSubLineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val grouping: JsonField, - private val type: JsonField, - private val tierConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonProperty("tier_config") + @ExcludeMissing + private val tierConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The total amount for this sub line item. */ fun amount(): String = amount.getRequired("amount") @@ -6240,6 +6338,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TierSubLineItem = apply { if (!validated) { amount() @@ -6271,63 +6371,50 @@ private constructor( @JvmSynthetic internal fun from(tierSubLineItem: TierSubLineItem) = apply { - this.amount = tierSubLineItem.amount - this.name = tierSubLineItem.name - this.quantity = tierSubLineItem.quantity - this.grouping = tierSubLineItem.grouping - this.type = tierSubLineItem.type - this.tierConfig = tierSubLineItem.tierConfig - additionalProperties(tierSubLineItem.additionalProperties) + amount = tierSubLineItem.amount + name = tierSubLineItem.name + quantity = tierSubLineItem.quantity + grouping = tierSubLineItem.grouping + type = tierSubLineItem.type + tierConfig = tierSubLineItem.tierConfig + additionalProperties = tierSubLineItem.additionalProperties.toMutableMap() } /** The total amount for this sub line item. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The total amount for this sub line item. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun grouping(grouping: Grouping) = grouping(JsonField.of(grouping)) - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun tierConfig(tierConfig: TierConfig) = tierConfig(JsonField.of(tierConfig)) - @JsonProperty("tier_config") - @ExcludeMissing fun tierConfig(tierConfig: JsonField) = apply { this.tierConfig = tierConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6335,6 +6422,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TierSubLineItem = TierSubLineItem( amount, @@ -6347,17 +6442,20 @@ private constructor( ) } - @JsonDeserialize(builder = Grouping.Builder::class) @NoAutoDetect class Grouping + @JsonCreator private constructor( - private val key: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("key") + @ExcludeMissing + private val key: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun key(): String = key.getRequired("key") /** No value indicates the default group */ @@ -6372,6 +6470,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Grouping = apply { if (!validated) { key() @@ -6396,40 +6496,43 @@ private constructor( @JvmSynthetic internal fun from(grouping: Grouping) = apply { - this.key = grouping.key - this.value = grouping.value - additionalProperties(grouping.additionalProperties) + key = grouping.key + value = grouping.value + additionalProperties = grouping.additionalProperties.toMutableMap() } fun key(key: String) = key(JsonField.of(key)) - @JsonProperty("key") - @ExcludeMissing fun key(key: JsonField) = apply { this.key = key } /** No value indicates the default group */ fun value(value: String) = value(JsonField.of(value)) /** No value indicates the default group */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Grouping = Grouping( key, @@ -6456,18 +6559,23 @@ private constructor( "Grouping{key=$key, value=$value, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TierConfig.Builder::class) @NoAutoDetect class TierConfig + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") + @ExcludeMissing + private val firstUnit: JsonField = JsonMissing.of(), + @JsonProperty("last_unit") + @ExcludeMissing + private val lastUnit: JsonField = JsonMissing.of(), + @JsonProperty("unit_amount") + @ExcludeMissing + private val unitAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun firstUnit(): Double = firstUnit.getRequired("first_unit") fun lastUnit(): Optional = @@ -6485,6 +6593,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TierConfig = apply { if (!validated) { firstUnit() @@ -6511,32 +6621,26 @@ private constructor( @JvmSynthetic internal fun from(tierConfig: TierConfig) = apply { - this.firstUnit = tierConfig.firstUnit - this.lastUnit = tierConfig.lastUnit - this.unitAmount = tierConfig.unitAmount - additionalProperties(tierConfig.additionalProperties) + firstUnit = tierConfig.firstUnit + lastUnit = tierConfig.lastUnit + unitAmount = tierConfig.unitAmount + additionalProperties = tierConfig.additionalProperties.toMutableMap() } fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) - @JsonProperty("first_unit") - @ExcludeMissing fun firstUnit(firstUnit: JsonField) = apply { this.firstUnit = firstUnit } fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) - @JsonProperty("last_unit") - @ExcludeMissing fun lastUnit(lastUnit: JsonField) = apply { this.lastUnit = lastUnit } fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - @JsonProperty("unit_amount") - @ExcludeMissing fun unitAmount(unitAmount: JsonField) = apply { this.unitAmount = unitAmount } @@ -6544,18 +6648,25 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TierConfig = TierConfig( firstUnit, @@ -6653,20 +6764,29 @@ private constructor( "TierSubLineItem{amount=$amount, name=$name, quantity=$quantity, grouping=$grouping, type=$type, tierConfig=$tierConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = OtherSubLineItem.Builder::class) @NoAutoDetect class OtherSubLineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val grouping: JsonField, - private val type: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The total amount for this sub line item. */ fun amount(): String = amount.getRequired("amount") @@ -6694,6 +6814,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): OtherSubLineItem = apply { if (!validated) { amount() @@ -6723,54 +6845,43 @@ private constructor( @JvmSynthetic internal fun from(otherSubLineItem: OtherSubLineItem) = apply { - this.amount = otherSubLineItem.amount - this.name = otherSubLineItem.name - this.quantity = otherSubLineItem.quantity - this.grouping = otherSubLineItem.grouping - this.type = otherSubLineItem.type - additionalProperties(otherSubLineItem.additionalProperties) + amount = otherSubLineItem.amount + name = otherSubLineItem.name + quantity = otherSubLineItem.quantity + grouping = otherSubLineItem.grouping + type = otherSubLineItem.type + additionalProperties = otherSubLineItem.additionalProperties.toMutableMap() } /** The total amount for this sub line item. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The total amount for this sub line item. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun grouping(grouping: Grouping) = grouping(JsonField.of(grouping)) - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6778,6 +6889,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): OtherSubLineItem = OtherSubLineItem( amount, @@ -6789,17 +6908,20 @@ private constructor( ) } - @JsonDeserialize(builder = Grouping.Builder::class) @NoAutoDetect class Grouping + @JsonCreator private constructor( - private val key: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("key") + @ExcludeMissing + private val key: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun key(): String = key.getRequired("key") /** No value indicates the default group */ @@ -6814,6 +6936,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Grouping = apply { if (!validated) { key() @@ -6838,40 +6962,43 @@ private constructor( @JvmSynthetic internal fun from(grouping: Grouping) = apply { - this.key = grouping.key - this.value = grouping.value - additionalProperties(grouping.additionalProperties) + key = grouping.key + value = grouping.value + additionalProperties = grouping.additionalProperties.toMutableMap() } fun key(key: String) = key(JsonField.of(key)) - @JsonProperty("key") - @ExcludeMissing fun key(key: JsonField) = apply { this.key = key } /** No value indicates the default group */ fun value(value: String) = value(JsonField.of(value)) /** No value indicates the default group */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Grouping = Grouping( key, @@ -6969,18 +7096,23 @@ private constructor( } } - @JsonDeserialize(builder = TaxAmount.Builder::class) @NoAutoDetect class TaxAmount + @JsonCreator private constructor( - private val taxRateDescription: JsonField, - private val taxRatePercentage: JsonField, - private val amount: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_rate_description") + @ExcludeMissing + private val taxRateDescription: JsonField = JsonMissing.of(), + @JsonProperty("tax_rate_percentage") + @ExcludeMissing + private val taxRatePercentage: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The human-readable description of the applied tax rate. */ fun taxRateDescription(): String = taxRateDescription.getRequired("tax_rate_description") @@ -7009,6 +7141,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TaxAmount = apply { if (!validated) { taxRateDescription() @@ -7034,10 +7168,10 @@ private constructor( @JvmSynthetic internal fun from(taxAmount: TaxAmount) = apply { - this.taxRateDescription = taxAmount.taxRateDescription - this.taxRatePercentage = taxAmount.taxRatePercentage - this.amount = taxAmount.amount - additionalProperties(taxAmount.additionalProperties) + taxRateDescription = taxAmount.taxRateDescription + taxRatePercentage = taxAmount.taxRatePercentage + amount = taxAmount.amount + additionalProperties = taxAmount.additionalProperties.toMutableMap() } /** The human-readable description of the applied tax rate. */ @@ -7045,8 +7179,6 @@ private constructor( taxRateDescription(JsonField.of(taxRateDescription)) /** The human-readable description of the applied tax rate. */ - @JsonProperty("tax_rate_description") - @ExcludeMissing fun taxRateDescription(taxRateDescription: JsonField) = apply { this.taxRateDescription = taxRateDescription } @@ -7056,8 +7188,6 @@ private constructor( taxRatePercentage(JsonField.of(taxRatePercentage)) /** The tax rate percentage, out of 100. */ - @JsonProperty("tax_rate_percentage") - @ExcludeMissing fun taxRatePercentage(taxRatePercentage: JsonField) = apply { this.taxRatePercentage = taxRatePercentage } @@ -7066,18 +7196,15 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount of additional tax incurred by this tax rate. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7085,6 +7212,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TaxAmount = TaxAmount( taxRateDescription, @@ -7130,17 +7265,20 @@ private constructor( "LineItem{amount=$amount, discount=$discount, endDate=$endDate, grouping=$grouping, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, name=$name, quantity=$quantity, startDate=$startDate, subtotal=$subtotal, subLineItems=$subLineItems, taxAmounts=$taxAmounts, id=$id, price=$price, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -7166,6 +7304,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -7189,17 +7329,15 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -7215,26 +7353,29 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase maximums, * this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -7266,19 +7407,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -7298,23 +7440,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -7335,17 +7482,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -7371,6 +7521,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -7394,17 +7546,15 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -7420,26 +7570,29 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase minimums, * this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -7466,21 +7619,30 @@ private constructor( "Minimum{minimumAmount=$minimumAmount, appliesToPriceIds=$appliesToPriceIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PaymentAttempt.Builder::class) @NoAutoDetect class PaymentAttempt + @JsonCreator private constructor( - private val id: JsonField, - private val paymentProvider: JsonField, - private val paymentProviderId: JsonField, - private val amount: JsonField, - private val succeeded: JsonField, - private val createdAt: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("payment_provider") + @ExcludeMissing + private val paymentProvider: JsonField = JsonMissing.of(), + @JsonProperty("payment_provider_id") + @ExcludeMissing + private val paymentProviderId: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("succeeded") + @ExcludeMissing + private val succeeded: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The ID of the payment attempt. */ fun id(): String = id.getRequired("id") @@ -7525,6 +7687,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PaymentAttempt = apply { if (!validated) { id() @@ -7556,21 +7720,19 @@ private constructor( @JvmSynthetic internal fun from(paymentAttempt: PaymentAttempt) = apply { - this.id = paymentAttempt.id - this.paymentProvider = paymentAttempt.paymentProvider - this.paymentProviderId = paymentAttempt.paymentProviderId - this.amount = paymentAttempt.amount - this.succeeded = paymentAttempt.succeeded - this.createdAt = paymentAttempt.createdAt - additionalProperties(paymentAttempt.additionalProperties) + id = paymentAttempt.id + paymentProvider = paymentAttempt.paymentProvider + paymentProviderId = paymentAttempt.paymentProviderId + amount = paymentAttempt.amount + succeeded = paymentAttempt.succeeded + createdAt = paymentAttempt.createdAt + additionalProperties = paymentAttempt.additionalProperties.toMutableMap() } /** The ID of the payment attempt. */ fun id(id: String) = id(JsonField.of(id)) /** The ID of the payment attempt. */ - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** The payment provider that attempted to collect the payment. */ @@ -7578,8 +7740,6 @@ private constructor( paymentProvider(JsonField.of(paymentProvider)) /** The payment provider that attempted to collect the payment. */ - @JsonProperty("payment_provider") - @ExcludeMissing fun paymentProvider(paymentProvider: JsonField) = apply { this.paymentProvider = paymentProvider } @@ -7589,8 +7749,6 @@ private constructor( paymentProviderId(JsonField.of(paymentProviderId)) /** The ID of the payment attempt in the payment provider. */ - @JsonProperty("payment_provider_id") - @ExcludeMissing fun paymentProviderId(paymentProviderId: JsonField) = apply { this.paymentProviderId = paymentProviderId } @@ -7599,42 +7757,41 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount of the payment attempt. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } /** Whether the payment attempt succeeded. */ fun succeeded(succeeded: Boolean) = succeeded(JsonField.of(succeeded)) /** Whether the payment attempt succeeded. */ - @JsonProperty("succeeded") - @ExcludeMissing fun succeeded(succeeded: JsonField) = apply { this.succeeded = succeeded } /** The time at which the payment attempt was created. */ fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) /** The time at which the payment attempt was created. */ - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PaymentAttempt = PaymentAttempt( id, @@ -7716,21 +7873,32 @@ private constructor( "PaymentAttempt{id=$id, paymentProvider=$paymentProvider, paymentProviderId=$paymentProviderId, amount=$amount, succeeded=$succeeded, createdAt=$createdAt, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ShippingAddress.Builder::class) @NoAutoDetect class ShippingAddress + @JsonCreator private constructor( - private val line1: JsonField, - private val line2: JsonField, - private val city: JsonField, - private val state: JsonField, - private val postalCode: JsonField, - private val country: JsonField, - private val additionalProperties: Map, + @JsonProperty("line1") + @ExcludeMissing + private val line1: JsonField = JsonMissing.of(), + @JsonProperty("line2") + @ExcludeMissing + private val line2: JsonField = JsonMissing.of(), + @JsonProperty("city") + @ExcludeMissing + private val city: JsonField = JsonMissing.of(), + @JsonProperty("state") + @ExcludeMissing + private val state: JsonField = JsonMissing.of(), + @JsonProperty("postal_code") + @ExcludeMissing + private val postalCode: JsonField = JsonMissing.of(), + @JsonProperty("country") + @ExcludeMissing + private val country: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun line1(): Optional = Optional.ofNullable(line1.getNullable("line1")) fun line2(): Optional = Optional.ofNullable(line2.getNullable("line2")) @@ -7760,6 +7928,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ShippingAddress = apply { if (!validated) { line1() @@ -7791,65 +7961,58 @@ private constructor( @JvmSynthetic internal fun from(shippingAddress: ShippingAddress) = apply { - this.line1 = shippingAddress.line1 - this.line2 = shippingAddress.line2 - this.city = shippingAddress.city - this.state = shippingAddress.state - this.postalCode = shippingAddress.postalCode - this.country = shippingAddress.country - additionalProperties(shippingAddress.additionalProperties) + line1 = shippingAddress.line1 + line2 = shippingAddress.line2 + city = shippingAddress.city + state = shippingAddress.state + postalCode = shippingAddress.postalCode + country = shippingAddress.country + additionalProperties = shippingAddress.additionalProperties.toMutableMap() } fun line1(line1: String) = line1(JsonField.of(line1)) - @JsonProperty("line1") - @ExcludeMissing fun line1(line1: JsonField) = apply { this.line1 = line1 } fun line2(line2: String) = line2(JsonField.of(line2)) - @JsonProperty("line2") - @ExcludeMissing fun line2(line2: JsonField) = apply { this.line2 = line2 } fun city(city: String) = city(JsonField.of(city)) - @JsonProperty("city") - @ExcludeMissing fun city(city: JsonField) = apply { this.city = city } fun state(state: String) = state(JsonField.of(state)) - @JsonProperty("state") - @ExcludeMissing fun state(state: JsonField) = apply { this.state = state } fun postalCode(postalCode: String) = postalCode(JsonField.of(postalCode)) - @JsonProperty("postal_code") - @ExcludeMissing fun postalCode(postalCode: JsonField) = apply { this.postalCode = postalCode } fun country(country: String) = country(JsonField.of(country)) - @JsonProperty("country") - @ExcludeMissing fun country(country: JsonField) = apply { this.country = country } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ShippingAddress = ShippingAddress( line1, @@ -7955,16 +8118,15 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = Subscription.Builder::class) @NoAutoDetect class Subscription + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -7973,6 +8135,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Subscription = apply { if (!validated) { id() @@ -7994,30 +8158,33 @@ private constructor( @JvmSynthetic internal fun from(subscription: Subscription) = apply { - this.id = subscription.id - additionalProperties(subscription.additionalProperties) + id = subscription.id + additionalProperties = subscription.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Subscription = Subscription(id, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceIssueParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceIssueParams.kt index a25314c0..e6166170 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceIssueParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceIssueParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional @@ -50,12 +51,13 @@ constructor( } } - @JsonDeserialize(builder = InvoiceIssueBody.Builder::class) @NoAutoDetect class InvoiceIssueBody + @JsonCreator internal constructor( - private val synchronous: Boolean?, - private val additionalProperties: Map, + @JsonProperty("synchronous") private val synchronous: Boolean?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -64,7 +66,8 @@ constructor( * fees. If the invoice is configured to sync to an external provider, a successful response * from this endpoint guarantees the invoice is present in the provider. */ - @JsonProperty("synchronous") fun synchronous(): Boolean? = synchronous + @JsonProperty("synchronous") + fun synchronous(): Optional = Optional.ofNullable(synchronous) @JsonAnyGetter @ExcludeMissing @@ -84,8 +87,8 @@ constructor( @JvmSynthetic internal fun from(invoiceIssueBody: InvoiceIssueBody) = apply { - this.synchronous = invoiceIssueBody.synchronous - additionalProperties(invoiceIssueBody.additionalProperties) + synchronous = invoiceIssueBody.synchronous + additionalProperties = invoiceIssueBody.additionalProperties.toMutableMap() } /** @@ -95,23 +98,27 @@ constructor( * provider, a successful response from this endpoint guarantees the invoice is present * in the provider. */ - @JsonProperty("synchronous") fun synchronous(synchronous: Boolean) = apply { this.synchronous = synchronous } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceIssueBody = InvoiceIssueBody(synchronous, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceLineItemCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceLineItemCreateParams.kt index 5870113e..c319155b 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceLineItemCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceLineItemCreateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.LocalDate import java.util.Objects @@ -63,39 +64,40 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = InvoiceLineItemCreateBody.Builder::class) @NoAutoDetect class InvoiceLineItemCreateBody + @JsonCreator internal constructor( - private val amount: String?, - private val endDate: LocalDate?, - private val invoiceId: String?, - private val name: String?, - private val quantity: Double?, - private val startDate: LocalDate?, - private val additionalProperties: Map, + @JsonProperty("amount") private val amount: String, + @JsonProperty("end_date") private val endDate: LocalDate, + @JsonProperty("invoice_id") private val invoiceId: String, + @JsonProperty("name") private val name: String, + @JsonProperty("quantity") private val quantity: Double, + @JsonProperty("start_date") private val startDate: LocalDate, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The total amount in the invoice's currency to add to the line item. */ - @JsonProperty("amount") fun amount(): String? = amount + @JsonProperty("amount") fun amount(): String = amount /** A date string to specify the line item's end date in the customer's timezone. */ - @JsonProperty("end_date") fun endDate(): LocalDate? = endDate + @JsonProperty("end_date") fun endDate(): LocalDate = endDate /** The id of the Invoice to add this line item. */ - @JsonProperty("invoice_id") fun invoiceId(): String? = invoiceId + @JsonProperty("invoice_id") fun invoiceId(): String = invoiceId /** * The item name associated with this line item. If an item with the same name exists in * Orb, that item will be associated with the line item. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The number of units on the line item */ - @JsonProperty("quantity") fun quantity(): Double? = quantity + @JsonProperty("quantity") fun quantity(): Double = quantity /** A date string to specify the line item's start date in the customer's timezone. */ - @JsonProperty("start_date") fun startDate(): LocalDate? = startDate + @JsonProperty("start_date") fun startDate(): LocalDate = startDate @JsonAnyGetter @ExcludeMissing @@ -120,54 +122,55 @@ constructor( @JvmSynthetic internal fun from(invoiceLineItemCreateBody: InvoiceLineItemCreateBody) = apply { - this.amount = invoiceLineItemCreateBody.amount - this.endDate = invoiceLineItemCreateBody.endDate - this.invoiceId = invoiceLineItemCreateBody.invoiceId - this.name = invoiceLineItemCreateBody.name - this.quantity = invoiceLineItemCreateBody.quantity - this.startDate = invoiceLineItemCreateBody.startDate - additionalProperties(invoiceLineItemCreateBody.additionalProperties) + amount = invoiceLineItemCreateBody.amount + endDate = invoiceLineItemCreateBody.endDate + invoiceId = invoiceLineItemCreateBody.invoiceId + name = invoiceLineItemCreateBody.name + quantity = invoiceLineItemCreateBody.quantity + startDate = invoiceLineItemCreateBody.startDate + additionalProperties = invoiceLineItemCreateBody.additionalProperties.toMutableMap() } /** The total amount in the invoice's currency to add to the line item. */ - @JsonProperty("amount") fun amount(amount: String) = apply { this.amount = amount } + fun amount(amount: String) = apply { this.amount = amount } /** A date string to specify the line item's end date in the customer's timezone. */ - @JsonProperty("end_date") fun endDate(endDate: LocalDate) = apply { this.endDate = endDate } /** The id of the Invoice to add this line item. */ - @JsonProperty("invoice_id") fun invoiceId(invoiceId: String) = apply { this.invoiceId = invoiceId } /** * The item name associated with this line item. If an item with the same name exists in * Orb, that item will be associated with the line item. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** The number of units on the line item */ - @JsonProperty("quantity") fun quantity(quantity: Double) = apply { this.quantity = quantity } /** A date string to specify the line item's start date in the customer's timezone. */ - @JsonProperty("start_date") fun startDate(startDate: LocalDate) = apply { this.startDate = startDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceLineItemCreateBody = InvoiceLineItemCreateBody( checkNotNull(amount) { "`amount` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceLineItemCreateResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceLineItemCreateResponse.kt index 14c5c14c..a70dbb56 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceLineItemCreateResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceLineItemCreateResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,31 +30,55 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = InvoiceLineItemCreateResponse.Builder::class) @NoAutoDetect class InvoiceLineItemCreateResponse +@JsonCreator private constructor( - private val amount: JsonField, - private val discount: JsonField, - private val endDate: JsonField, - private val grouping: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val startDate: JsonField, - private val subtotal: JsonField, - private val subLineItems: JsonField>, - private val taxAmounts: JsonField>, - private val id: JsonField, - private val price: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("name") @ExcludeMissing private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("sub_line_items") + @ExcludeMissing + private val subLineItems: JsonField> = JsonMissing.of(), + @JsonProperty("tax_amounts") + @ExcludeMissing + private val taxAmounts: JsonField> = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("price") @ExcludeMissing private val price: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The final amount after any discounts or minimums. */ fun amount(): String = amount.getRequired("amount") @@ -616,6 +641,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoiceLineItemCreateResponse = apply { if (!validated) { amount() @@ -667,45 +694,39 @@ private constructor( @JvmSynthetic internal fun from(invoiceLineItemCreateResponse: InvoiceLineItemCreateResponse) = apply { - this.amount = invoiceLineItemCreateResponse.amount - this.discount = invoiceLineItemCreateResponse.discount - this.endDate = invoiceLineItemCreateResponse.endDate - this.grouping = invoiceLineItemCreateResponse.grouping - this.minimum = invoiceLineItemCreateResponse.minimum - this.minimumAmount = invoiceLineItemCreateResponse.minimumAmount - this.maximum = invoiceLineItemCreateResponse.maximum - this.maximumAmount = invoiceLineItemCreateResponse.maximumAmount - this.name = invoiceLineItemCreateResponse.name - this.quantity = invoiceLineItemCreateResponse.quantity - this.startDate = invoiceLineItemCreateResponse.startDate - this.subtotal = invoiceLineItemCreateResponse.subtotal - this.subLineItems = invoiceLineItemCreateResponse.subLineItems - this.taxAmounts = invoiceLineItemCreateResponse.taxAmounts - this.id = invoiceLineItemCreateResponse.id - this.price = invoiceLineItemCreateResponse.price - additionalProperties(invoiceLineItemCreateResponse.additionalProperties) + amount = invoiceLineItemCreateResponse.amount + discount = invoiceLineItemCreateResponse.discount + endDate = invoiceLineItemCreateResponse.endDate + grouping = invoiceLineItemCreateResponse.grouping + minimum = invoiceLineItemCreateResponse.minimum + minimumAmount = invoiceLineItemCreateResponse.minimumAmount + maximum = invoiceLineItemCreateResponse.maximum + maximumAmount = invoiceLineItemCreateResponse.maximumAmount + name = invoiceLineItemCreateResponse.name + quantity = invoiceLineItemCreateResponse.quantity + startDate = invoiceLineItemCreateResponse.startDate + subtotal = invoiceLineItemCreateResponse.subtotal + subLineItems = invoiceLineItemCreateResponse.subLineItems + taxAmounts = invoiceLineItemCreateResponse.taxAmounts + id = invoiceLineItemCreateResponse.id + price = invoiceLineItemCreateResponse.price + additionalProperties = invoiceLineItemCreateResponse.additionalProperties.toMutableMap() } /** The final amount after any discounts or minimums. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The final amount after any discounts or minimums. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } /** The end date of the range of time applied for this line item's price. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the range of time applied for this line item's price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -720,34 +741,24 @@ private constructor( * populated with the key and a value. The `amount` and `subtotal` will be the values for * this particular grouping. */ - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -756,30 +767,22 @@ private constructor( fun name(name: String) = name(JsonField.of(name)) /** The name of the price associated with this line item. */ - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } /** The start date of the range of time applied for this line item's price. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the range of time applied for this line item's price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The line amount before any line item-specific discounts or minimums. */ fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** The line amount before any line item-specific discounts or minimums. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** @@ -792,8 +795,6 @@ private constructor( * For complex pricing structures, the line item can be broken down further in * `sub_line_items`. */ - @JsonProperty("sub_line_items") - @ExcludeMissing fun subLineItems(subLineItems: JsonField>) = apply { this.subLineItems = subLineItems } @@ -808,8 +809,6 @@ private constructor( * An array of tax rates and their incurred tax amounts. Empty if no tax integration is * configured. */ - @JsonProperty("tax_amounts") - @ExcludeMissing fun taxAmounts(taxAmounts: JsonField>) = apply { this.taxAmounts = taxAmounts } @@ -818,7 +817,7 @@ private constructor( fun id(id: String) = id(JsonField.of(id)) /** A unique ID for this line item. */ - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * The Price resource represents a price that can be billed on a subscription, resulting in @@ -1278,24 +1277,27 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceLineItemCreateResponse = InvoiceLineItemCreateResponse( amount, @@ -1318,17 +1320,20 @@ private constructor( ) } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -1354,6 +1359,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -1377,17 +1384,15 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -1403,26 +1408,29 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase maximums, * this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -1449,17 +1457,20 @@ private constructor( "Maximum{maximumAmount=$maximumAmount, appliesToPriceIds=$appliesToPriceIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -1485,6 +1496,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -1508,17 +1521,15 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -1534,26 +1545,29 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase minimums, * this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -1733,21 +1747,32 @@ private constructor( } } - @JsonDeserialize(builder = MatrixSubLineItem.Builder::class) @NoAutoDetect class MatrixSubLineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val grouping: JsonField, - private val type: JsonField, - private val matrixConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonProperty("matrix_config") + @ExcludeMissing + private val matrixConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The total amount for this sub line item. */ fun amount(): String = amount.getRequired("amount") @@ -1779,6 +1804,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixSubLineItem = apply { if (!validated) { amount() @@ -1810,64 +1837,51 @@ private constructor( @JvmSynthetic internal fun from(matrixSubLineItem: MatrixSubLineItem) = apply { - this.amount = matrixSubLineItem.amount - this.name = matrixSubLineItem.name - this.quantity = matrixSubLineItem.quantity - this.grouping = matrixSubLineItem.grouping - this.type = matrixSubLineItem.type - this.matrixConfig = matrixSubLineItem.matrixConfig - additionalProperties(matrixSubLineItem.additionalProperties) + amount = matrixSubLineItem.amount + name = matrixSubLineItem.name + quantity = matrixSubLineItem.quantity + grouping = matrixSubLineItem.grouping + type = matrixSubLineItem.type + matrixConfig = matrixSubLineItem.matrixConfig + additionalProperties = matrixSubLineItem.additionalProperties.toMutableMap() } /** The total amount for this sub line item. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The total amount for this sub line item. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun grouping(grouping: Grouping) = grouping(JsonField.of(grouping)) - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun matrixConfig(matrixConfig: MatrixConfig) = matrixConfig(JsonField.of(matrixConfig)) - @JsonProperty("matrix_config") - @ExcludeMissing fun matrixConfig(matrixConfig: JsonField) = apply { this.matrixConfig = matrixConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1875,6 +1889,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixSubLineItem = MatrixSubLineItem( amount, @@ -1887,17 +1909,20 @@ private constructor( ) } - @JsonDeserialize(builder = Grouping.Builder::class) @NoAutoDetect class Grouping + @JsonCreator private constructor( - private val key: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("key") + @ExcludeMissing + private val key: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun key(): String = key.getRequired("key") /** No value indicates the default group */ @@ -1912,6 +1937,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Grouping = apply { if (!validated) { key() @@ -1935,33 +1962,28 @@ private constructor( @JvmSynthetic internal fun from(grouping: Grouping) = apply { - this.key = grouping.key - this.value = grouping.value - additionalProperties(grouping.additionalProperties) + key = grouping.key + value = grouping.value + additionalProperties = grouping.additionalProperties.toMutableMap() } fun key(key: String) = key(JsonField.of(key)) - @JsonProperty("key") - @ExcludeMissing fun key(key: JsonField) = apply { this.key = key } /** No value indicates the default group */ fun value(value: String) = value(JsonField.of(value)) /** No value indicates the default group */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1969,6 +1991,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Grouping = Grouping( key, @@ -1995,16 +2025,17 @@ private constructor( "Grouping{key=$key, value=$value, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimension_values") + @ExcludeMissing + private val dimensionValues: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The ordered dimension values for this line item. */ fun dimensionValues(): List = dimensionValues.getRequired("dimension_values") @@ -2018,6 +2049,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixConfig = apply { if (!validated) { dimensionValues() @@ -2039,8 +2072,8 @@ private constructor( @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensionValues = matrixConfig.dimensionValues - additionalProperties(matrixConfig.additionalProperties) + dimensionValues = matrixConfig.dimensionValues + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** The ordered dimension values for this line item. */ @@ -2048,20 +2081,17 @@ private constructor( dimensionValues(JsonField.of(dimensionValues)) /** The ordered dimension values for this line item. */ - @JsonProperty("dimension_values") - @ExcludeMissing fun dimensionValues(dimensionValues: JsonField>) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2069,6 +2099,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( dimensionValues.map { it.toImmutable() }, @@ -2163,21 +2201,32 @@ private constructor( "MatrixSubLineItem{amount=$amount, name=$name, quantity=$quantity, grouping=$grouping, type=$type, matrixConfig=$matrixConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TierSubLineItem.Builder::class) @NoAutoDetect class TierSubLineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val grouping: JsonField, - private val type: JsonField, - private val tierConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonProperty("tier_config") + @ExcludeMissing + private val tierConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The total amount for this sub line item. */ fun amount(): String = amount.getRequired("amount") @@ -2209,6 +2258,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TierSubLineItem = apply { if (!validated) { amount() @@ -2240,63 +2291,50 @@ private constructor( @JvmSynthetic internal fun from(tierSubLineItem: TierSubLineItem) = apply { - this.amount = tierSubLineItem.amount - this.name = tierSubLineItem.name - this.quantity = tierSubLineItem.quantity - this.grouping = tierSubLineItem.grouping - this.type = tierSubLineItem.type - this.tierConfig = tierSubLineItem.tierConfig - additionalProperties(tierSubLineItem.additionalProperties) + amount = tierSubLineItem.amount + name = tierSubLineItem.name + quantity = tierSubLineItem.quantity + grouping = tierSubLineItem.grouping + type = tierSubLineItem.type + tierConfig = tierSubLineItem.tierConfig + additionalProperties = tierSubLineItem.additionalProperties.toMutableMap() } /** The total amount for this sub line item. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The total amount for this sub line item. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun grouping(grouping: Grouping) = grouping(JsonField.of(grouping)) - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun tierConfig(tierConfig: TierConfig) = tierConfig(JsonField.of(tierConfig)) - @JsonProperty("tier_config") - @ExcludeMissing fun tierConfig(tierConfig: JsonField) = apply { this.tierConfig = tierConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2304,6 +2342,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TierSubLineItem = TierSubLineItem( amount, @@ -2316,17 +2362,20 @@ private constructor( ) } - @JsonDeserialize(builder = Grouping.Builder::class) @NoAutoDetect class Grouping + @JsonCreator private constructor( - private val key: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("key") + @ExcludeMissing + private val key: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun key(): String = key.getRequired("key") /** No value indicates the default group */ @@ -2341,6 +2390,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Grouping = apply { if (!validated) { key() @@ -2364,33 +2415,28 @@ private constructor( @JvmSynthetic internal fun from(grouping: Grouping) = apply { - this.key = grouping.key - this.value = grouping.value - additionalProperties(grouping.additionalProperties) + key = grouping.key + value = grouping.value + additionalProperties = grouping.additionalProperties.toMutableMap() } fun key(key: String) = key(JsonField.of(key)) - @JsonProperty("key") - @ExcludeMissing fun key(key: JsonField) = apply { this.key = key } /** No value indicates the default group */ fun value(value: String) = value(JsonField.of(value)) /** No value indicates the default group */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2398,6 +2444,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Grouping = Grouping( key, @@ -2424,18 +2478,23 @@ private constructor( "Grouping{key=$key, value=$value, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TierConfig.Builder::class) @NoAutoDetect class TierConfig + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") + @ExcludeMissing + private val firstUnit: JsonField = JsonMissing.of(), + @JsonProperty("last_unit") + @ExcludeMissing + private val lastUnit: JsonField = JsonMissing.of(), + @JsonProperty("unit_amount") + @ExcludeMissing + private val unitAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun firstUnit(): Double = firstUnit.getRequired("first_unit") fun lastUnit(): Optional = @@ -2453,6 +2512,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TierConfig = apply { if (!validated) { firstUnit() @@ -2478,42 +2539,35 @@ private constructor( @JvmSynthetic internal fun from(tierConfig: TierConfig) = apply { - this.firstUnit = tierConfig.firstUnit - this.lastUnit = tierConfig.lastUnit - this.unitAmount = tierConfig.unitAmount - additionalProperties(tierConfig.additionalProperties) + firstUnit = tierConfig.firstUnit + lastUnit = tierConfig.lastUnit + unitAmount = tierConfig.unitAmount + additionalProperties = tierConfig.additionalProperties.toMutableMap() } fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) - @JsonProperty("first_unit") - @ExcludeMissing fun firstUnit(firstUnit: JsonField) = apply { this.firstUnit = firstUnit } fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) - @JsonProperty("last_unit") - @ExcludeMissing fun lastUnit(lastUnit: JsonField) = apply { this.lastUnit = lastUnit } fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - @JsonProperty("unit_amount") - @ExcludeMissing fun unitAmount(unitAmount: JsonField) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2521,6 +2575,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TierConfig = TierConfig( firstUnit, @@ -2617,20 +2679,29 @@ private constructor( "TierSubLineItem{amount=$amount, name=$name, quantity=$quantity, grouping=$grouping, type=$type, tierConfig=$tierConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = OtherSubLineItem.Builder::class) @NoAutoDetect class OtherSubLineItem + @JsonCreator private constructor( - private val amount: JsonField, - private val name: JsonField, - private val quantity: JsonField, - private val grouping: JsonField, - private val type: JsonField, - private val additionalProperties: Map, + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("grouping") + @ExcludeMissing + private val grouping: JsonField = JsonMissing.of(), + @JsonProperty("type") + @ExcludeMissing + private val type: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The total amount for this sub line item. */ fun amount(): String = amount.getRequired("amount") @@ -2658,6 +2729,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): OtherSubLineItem = apply { if (!validated) { amount() @@ -2687,54 +2760,43 @@ private constructor( @JvmSynthetic internal fun from(otherSubLineItem: OtherSubLineItem) = apply { - this.amount = otherSubLineItem.amount - this.name = otherSubLineItem.name - this.quantity = otherSubLineItem.quantity - this.grouping = otherSubLineItem.grouping - this.type = otherSubLineItem.type - additionalProperties(otherSubLineItem.additionalProperties) + amount = otherSubLineItem.amount + name = otherSubLineItem.name + quantity = otherSubLineItem.quantity + grouping = otherSubLineItem.grouping + type = otherSubLineItem.type + additionalProperties = otherSubLineItem.additionalProperties.toMutableMap() } /** The total amount for this sub line item. */ fun amount(amount: String) = amount(JsonField.of(amount)) /** The total amount for this sub line item. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun grouping(grouping: Grouping) = grouping(JsonField.of(grouping)) - @JsonProperty("grouping") - @ExcludeMissing fun grouping(grouping: JsonField) = apply { this.grouping = grouping } fun type(type: Type) = type(JsonField.of(type)) - @JsonProperty("type") - @ExcludeMissing fun type(type: JsonField) = apply { this.type = type } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2742,6 +2804,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): OtherSubLineItem = OtherSubLineItem( amount, @@ -2753,17 +2823,20 @@ private constructor( ) } - @JsonDeserialize(builder = Grouping.Builder::class) @NoAutoDetect class Grouping + @JsonCreator private constructor( - private val key: JsonField, - private val value: JsonField, - private val additionalProperties: Map, + @JsonProperty("key") + @ExcludeMissing + private val key: JsonField = JsonMissing.of(), + @JsonProperty("value") + @ExcludeMissing + private val value: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun key(): String = key.getRequired("key") /** No value indicates the default group */ @@ -2778,6 +2851,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Grouping = apply { if (!validated) { key() @@ -2801,33 +2876,28 @@ private constructor( @JvmSynthetic internal fun from(grouping: Grouping) = apply { - this.key = grouping.key - this.value = grouping.value - additionalProperties(grouping.additionalProperties) + key = grouping.key + value = grouping.value + additionalProperties = grouping.additionalProperties.toMutableMap() } fun key(key: String) = key(JsonField.of(key)) - @JsonProperty("key") - @ExcludeMissing fun key(key: JsonField) = apply { this.key = key } /** No value indicates the default group */ fun value(value: String) = value(JsonField.of(value)) /** No value indicates the default group */ - @JsonProperty("value") - @ExcludeMissing fun value(value: JsonField) = apply { this.value = value } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2835,6 +2905,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Grouping = Grouping( key, @@ -2931,18 +3009,23 @@ private constructor( } } - @JsonDeserialize(builder = TaxAmount.Builder::class) @NoAutoDetect class TaxAmount + @JsonCreator private constructor( - private val taxRateDescription: JsonField, - private val taxRatePercentage: JsonField, - private val amount: JsonField, - private val additionalProperties: Map, + @JsonProperty("tax_rate_description") + @ExcludeMissing + private val taxRateDescription: JsonField = JsonMissing.of(), + @JsonProperty("tax_rate_percentage") + @ExcludeMissing + private val taxRatePercentage: JsonField = JsonMissing.of(), + @JsonProperty("amount") + @ExcludeMissing + private val amount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The human-readable description of the applied tax rate. */ fun taxRateDescription(): String = taxRateDescription.getRequired("tax_rate_description") @@ -2970,6 +3053,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TaxAmount = apply { if (!validated) { taxRateDescription() @@ -2995,10 +3080,10 @@ private constructor( @JvmSynthetic internal fun from(taxAmount: TaxAmount) = apply { - this.taxRateDescription = taxAmount.taxRateDescription - this.taxRatePercentage = taxAmount.taxRatePercentage - this.amount = taxAmount.amount - additionalProperties(taxAmount.additionalProperties) + taxRateDescription = taxAmount.taxRateDescription + taxRatePercentage = taxAmount.taxRatePercentage + amount = taxAmount.amount + additionalProperties = taxAmount.additionalProperties.toMutableMap() } /** The human-readable description of the applied tax rate. */ @@ -3006,8 +3091,6 @@ private constructor( taxRateDescription(JsonField.of(taxRateDescription)) /** The human-readable description of the applied tax rate. */ - @JsonProperty("tax_rate_description") - @ExcludeMissing fun taxRateDescription(taxRateDescription: JsonField) = apply { this.taxRateDescription = taxRateDescription } @@ -3017,8 +3100,6 @@ private constructor( taxRatePercentage(JsonField.of(taxRatePercentage)) /** The tax rate percentage, out of 100. */ - @JsonProperty("tax_rate_percentage") - @ExcludeMissing fun taxRatePercentage(taxRatePercentage: JsonField) = apply { this.taxRatePercentage = taxRatePercentage } @@ -3027,24 +3108,27 @@ private constructor( fun amount(amount: String) = amount(JsonField.of(amount)) /** The amount of additional tax incurred by this tax rate. */ - @JsonProperty("amount") - @ExcludeMissing fun amount(amount: JsonField) = apply { this.amount = amount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TaxAmount = TaxAmount( taxRateDescription, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceListPage.kt index ec38b9b1..f679a1f2 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.InvoiceService import java.util.Objects @@ -82,13 +83,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -152,18 +155,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceListPageAsync.kt index bc4bc4c8..83d03da8 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.InvoiceServiceAsync import java.util.Objects @@ -89,13 +90,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -159,18 +162,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceMarkPaidParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceMarkPaidParams.kt index 6c8245ef..96505c5b 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceMarkPaidParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceMarkPaidParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.LocalDate import java.util.Objects @@ -62,25 +63,27 @@ constructor( } } - @JsonDeserialize(builder = InvoiceMarkPaidBody.Builder::class) @NoAutoDetect class InvoiceMarkPaidBody + @JsonCreator internal constructor( - private val paymentReceivedDate: LocalDate?, - private val externalId: String?, - private val notes: String?, - private val additionalProperties: Map, + @JsonProperty("payment_received_date") private val paymentReceivedDate: LocalDate, + @JsonProperty("external_id") private val externalId: String?, + @JsonProperty("notes") private val notes: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** A date string to specify the date of the payment. */ @JsonProperty("payment_received_date") - fun paymentReceivedDate(): LocalDate? = paymentReceivedDate + fun paymentReceivedDate(): LocalDate = paymentReceivedDate /** An optional external ID to associate with the payment. */ - @JsonProperty("external_id") fun externalId(): String? = externalId + @JsonProperty("external_id") + fun externalId(): Optional = Optional.ofNullable(externalId) /** An optional note to associate with the payment. */ - @JsonProperty("notes") fun notes(): String? = notes + @JsonProperty("notes") fun notes(): Optional = Optional.ofNullable(notes) @JsonAnyGetter @ExcludeMissing @@ -102,39 +105,42 @@ constructor( @JvmSynthetic internal fun from(invoiceMarkPaidBody: InvoiceMarkPaidBody) = apply { - this.paymentReceivedDate = invoiceMarkPaidBody.paymentReceivedDate - this.externalId = invoiceMarkPaidBody.externalId - this.notes = invoiceMarkPaidBody.notes - additionalProperties(invoiceMarkPaidBody.additionalProperties) + paymentReceivedDate = invoiceMarkPaidBody.paymentReceivedDate + externalId = invoiceMarkPaidBody.externalId + notes = invoiceMarkPaidBody.notes + additionalProperties = invoiceMarkPaidBody.additionalProperties.toMutableMap() } /** A date string to specify the date of the payment. */ - @JsonProperty("payment_received_date") fun paymentReceivedDate(paymentReceivedDate: LocalDate) = apply { this.paymentReceivedDate = paymentReceivedDate } /** An optional external ID to associate with the payment. */ - @JsonProperty("external_id") fun externalId(externalId: String) = apply { this.externalId = externalId } /** An optional note to associate with the payment. */ - @JsonProperty("notes") fun notes(notes: String) = apply { this.notes = notes } + fun notes(notes: String) = apply { this.notes = notes } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceMarkPaidBody = InvoiceMarkPaidBody( checkNotNull(paymentReceivedDate) { diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceUpdateParams.kt index ffe85b08..46caef23 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceUpdateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional @@ -50,12 +51,13 @@ constructor( } } - @JsonDeserialize(builder = InvoiceUpdateBody.Builder::class) @NoAutoDetect class InvoiceUpdateBody + @JsonCreator internal constructor( - private val metadata: Metadata?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -63,7 +65,7 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) @JsonAnyGetter @ExcludeMissing @@ -83,8 +85,8 @@ constructor( @JvmSynthetic internal fun from(invoiceUpdateBody: InvoiceUpdateBody) = apply { - this.metadata = invoiceUpdateBody.metadata - additionalProperties(invoiceUpdateBody.additionalProperties) + metadata = invoiceUpdateBody.metadata + additionalProperties = invoiceUpdateBody.additionalProperties.toMutableMap() } /** @@ -92,23 +94,27 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoiceUpdateBody = InvoiceUpdateBody(metadata, additionalProperties.toImmutable()) } @@ -300,11 +306,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -324,23 +331,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Item.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Item.kt index 3ab2ac6a..854466a3 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Item.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Item.kt @@ -6,13 +6,13 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -23,19 +23,21 @@ import java.util.Objects * items, billable metrics, and prices and are used for defining external sync behavior for invoices * and tax calculation purposes. */ -@JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item +@JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val createdAt: JsonField, - private val externalConnections: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") @ExcludeMissing private val name: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("external_connections") + @ExcludeMissing + private val externalConnections: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -59,6 +61,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -86,52 +90,51 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - this.createdAt = item.createdAt - this.externalConnections = item.externalConnections - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + createdAt = item.createdAt + externalConnections = item.externalConnections + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun externalConnections(externalConnections: List) = externalConnections(JsonField.of(externalConnections)) - @JsonProperty("external_connections") - @ExcludeMissing fun externalConnections(externalConnections: JsonField>) = apply { this.externalConnections = externalConnections } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -142,17 +145,20 @@ private constructor( ) } - @JsonDeserialize(builder = ExternalConnection.Builder::class) @NoAutoDetect class ExternalConnection + @JsonCreator private constructor( - private val externalConnectionName: JsonField, - private val externalEntityId: JsonField, - private val additionalProperties: Map, + @JsonProperty("external_connection_name") + @ExcludeMissing + private val externalConnectionName: JsonField = JsonMissing.of(), + @JsonProperty("external_entity_id") + @ExcludeMissing + private val externalEntityId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun externalConnectionName(): ExternalConnectionName = externalConnectionName.getRequired("external_connection_name") @@ -170,6 +176,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ExternalConnection = apply { if (!validated) { externalConnectionName() @@ -193,16 +201,14 @@ private constructor( @JvmSynthetic internal fun from(externalConnection: ExternalConnection) = apply { - this.externalConnectionName = externalConnection.externalConnectionName - this.externalEntityId = externalConnection.externalEntityId - additionalProperties(externalConnection.additionalProperties) + externalConnectionName = externalConnection.externalConnectionName + externalEntityId = externalConnection.externalEntityId + additionalProperties = externalConnection.additionalProperties.toMutableMap() } fun externalConnectionName(externalConnectionName: ExternalConnectionName) = externalConnectionName(JsonField.of(externalConnectionName)) - @JsonProperty("external_connection_name") - @ExcludeMissing fun externalConnectionName(externalConnectionName: JsonField) = apply { this.externalConnectionName = externalConnectionName @@ -211,26 +217,29 @@ private constructor( fun externalEntityId(externalEntityId: String) = externalEntityId(JsonField.of(externalEntityId)) - @JsonProperty("external_entity_id") - @ExcludeMissing fun externalEntityId(externalEntityId: JsonField) = apply { this.externalEntityId = externalEntityId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ExternalConnection = ExternalConnection( externalConnectionName, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemCreateParams.kt index b82d4221..9e6d1ced 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemCreateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects @@ -39,16 +40,17 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = ItemCreateBody.Builder::class) @NoAutoDetect class ItemCreateBody + @JsonCreator internal constructor( - private val name: String?, - private val additionalProperties: Map, + @JsonProperty("name") private val name: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The name of the item. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name @JsonAnyGetter @ExcludeMissing @@ -68,27 +70,32 @@ constructor( @JvmSynthetic internal fun from(itemCreateBody: ItemCreateBody) = apply { - this.name = itemCreateBody.name - additionalProperties(itemCreateBody.additionalProperties) + name = itemCreateBody.name + additionalProperties = itemCreateBody.additionalProperties.toMutableMap() } /** The name of the item. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ItemCreateBody = ItemCreateBody( checkNotNull(name) { "`name` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemListPage.kt index 6e5c1805..0c10ad15 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.ItemService import java.util.Objects @@ -82,13 +83,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -152,17 +155,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } + fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemListPageAsync.kt index effd882a..f4a0efdd 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.ItemServiceAsync import java.util.Objects @@ -85,13 +86,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -155,17 +158,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } + fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemUpdateParams.kt index ca8abb57..f607d42f 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/ItemUpdateParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -67,19 +67,22 @@ constructor( * existing mappings. Orb requires that you pass the full list of mappings; this list will * replace the existing item mappings. */ - @JsonDeserialize(builder = ItemUpdateBody.Builder::class) @NoAutoDetect class ItemUpdateBody + @JsonCreator internal constructor( + @JsonProperty("external_connections") private val externalConnections: List?, - private val name: String?, - private val additionalProperties: Map, + @JsonProperty("name") private val name: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonProperty("external_connections") - fun externalConnections(): List? = externalConnections + fun externalConnections(): Optional> = + Optional.ofNullable(externalConnections) - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): Optional = Optional.ofNullable(name) @JsonAnyGetter @ExcludeMissing @@ -100,32 +103,36 @@ constructor( @JvmSynthetic internal fun from(itemUpdateBody: ItemUpdateBody) = apply { - this.externalConnections = itemUpdateBody.externalConnections - this.name = itemUpdateBody.name - additionalProperties(itemUpdateBody.additionalProperties) + externalConnections = itemUpdateBody.externalConnections?.toMutableList() + name = itemUpdateBody.name + additionalProperties = itemUpdateBody.additionalProperties.toMutableMap() } - @JsonProperty("external_connections") fun externalConnections(externalConnections: List) = apply { this.externalConnections = externalConnections } - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ItemUpdateBody = ItemUpdateBody( externalConnections?.toImmutable(), @@ -324,19 +331,21 @@ constructor( ) } - @JsonDeserialize(builder = ExternalConnection.Builder::class) @NoAutoDetect class ExternalConnection + @JsonCreator private constructor( - private val externalConnectionName: ExternalConnectionName?, - private val externalEntityId: String?, - private val additionalProperties: Map, + @JsonProperty("external_connection_name") + private val externalConnectionName: ExternalConnectionName, + @JsonProperty("external_entity_id") private val externalEntityId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonProperty("external_connection_name") - fun externalConnectionName(): ExternalConnectionName? = externalConnectionName + fun externalConnectionName(): ExternalConnectionName = externalConnectionName - @JsonProperty("external_entity_id") fun externalEntityId(): String? = externalEntityId + @JsonProperty("external_entity_id") fun externalEntityId(): String = externalEntityId @JsonAnyGetter @ExcludeMissing @@ -357,35 +366,38 @@ constructor( @JvmSynthetic internal fun from(externalConnection: ExternalConnection) = apply { - this.externalConnectionName = externalConnection.externalConnectionName - this.externalEntityId = externalConnection.externalEntityId - additionalProperties(externalConnection.additionalProperties) + externalConnectionName = externalConnection.externalConnectionName + externalEntityId = externalConnection.externalEntityId + additionalProperties = externalConnection.additionalProperties.toMutableMap() } - @JsonProperty("external_connection_name") fun externalConnectionName(externalConnectionName: ExternalConnectionName) = apply { this.externalConnectionName = externalConnectionName } - @JsonProperty("external_entity_id") fun externalEntityId(externalEntityId: String) = apply { this.externalEntityId = externalEntityId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ExternalConnection = ExternalConnection( checkNotNull(externalConnectionName) { diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricCreateParams.kt index c994759f..db4f224b 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricCreateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional @@ -59,36 +60,38 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = MetricCreateBody.Builder::class) @NoAutoDetect class MetricCreateBody + @JsonCreator internal constructor( - private val description: String?, - private val itemId: String?, - private val name: String?, - private val sql: String?, - private val metadata: Metadata?, - private val additionalProperties: Map, + @JsonProperty("description") private val description: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("name") private val name: String, + @JsonProperty("sql") private val sql: String, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** A description of the metric. */ - @JsonProperty("description") fun description(): String? = description + @JsonProperty("description") + fun description(): Optional = Optional.ofNullable(description) /** The id of the item */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** The name of the metric. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** A sql string defining the metric. */ - @JsonProperty("sql") fun sql(): String? = sql + @JsonProperty("sql") fun sql(): String = sql /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) @JsonAnyGetter @ExcludeMissing @@ -112,49 +115,52 @@ constructor( @JvmSynthetic internal fun from(metricCreateBody: MetricCreateBody) = apply { - this.description = metricCreateBody.description - this.itemId = metricCreateBody.itemId - this.name = metricCreateBody.name - this.sql = metricCreateBody.sql - this.metadata = metricCreateBody.metadata - additionalProperties(metricCreateBody.additionalProperties) + description = metricCreateBody.description + itemId = metricCreateBody.itemId + name = metricCreateBody.name + sql = metricCreateBody.sql + metadata = metricCreateBody.metadata + additionalProperties = metricCreateBody.additionalProperties.toMutableMap() } /** A description of the metric. */ - @JsonProperty("description") fun description(description: String) = apply { this.description = description } /** The id of the item */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** The name of the metric. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** A sql string defining the metric. */ - @JsonProperty("sql") fun sql(sql: String) = apply { this.sql = sql } + fun sql(sql: String) = apply { this.sql = sql } /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MetricCreateBody = MetricCreateBody( description, @@ -372,11 +378,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -396,23 +403,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricListPage.kt index 721c074f..3fa45c7c 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.MetricService import java.util.Objects @@ -82,13 +83,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -152,18 +155,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricListPageAsync.kt index 2b239378..99b339f3 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.MetricServiceAsync import java.util.Objects @@ -85,13 +86,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -155,18 +158,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricUpdateParams.kt index 438624c5..82ebc67a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/MetricUpdateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional @@ -50,12 +51,13 @@ constructor( } } - @JsonDeserialize(builder = MetricUpdateBody.Builder::class) @NoAutoDetect class MetricUpdateBody + @JsonCreator internal constructor( - private val metadata: Metadata?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -63,7 +65,7 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) @JsonAnyGetter @ExcludeMissing @@ -83,8 +85,8 @@ constructor( @JvmSynthetic internal fun from(metricUpdateBody: MetricUpdateBody) = apply { - this.metadata = metricUpdateBody.metadata - additionalProperties(metricUpdateBody.additionalProperties) + metadata = metricUpdateBody.metadata + additionalProperties = metricUpdateBody.additionalProperties.toMutableMap() } /** @@ -92,23 +94,27 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MetricUpdateBody = MetricUpdateBody(metadata, additionalProperties.toImmutable()) } @@ -300,11 +306,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -324,23 +331,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PaginationMetadata.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PaginationMetadata.kt index b4a53f23..4464fb6d 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PaginationMetadata.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PaginationMetadata.kt @@ -4,28 +4,31 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = PaginationMetadata.Builder::class) @NoAutoDetect class PaginationMetadata +@JsonCreator private constructor( - private val hasMore: JsonField, - private val nextCursor: JsonField, - private val additionalProperties: Map, + @JsonProperty("has_more") + @ExcludeMissing + private val hasMore: JsonField = JsonMissing.of(), + @JsonProperty("next_cursor") + @ExcludeMissing + private val nextCursor: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun hasMore(): Boolean = hasMore.getRequired("has_more") fun nextCursor(): Optional = Optional.ofNullable(nextCursor.getNullable("next_cursor")) @@ -38,6 +41,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PaginationMetadata = apply { if (!validated) { hasMore() @@ -61,37 +66,38 @@ private constructor( @JvmSynthetic internal fun from(paginationMetadata: PaginationMetadata) = apply { - this.hasMore = paginationMetadata.hasMore - this.nextCursor = paginationMetadata.nextCursor - additionalProperties(paginationMetadata.additionalProperties) + hasMore = paginationMetadata.hasMore + nextCursor = paginationMetadata.nextCursor + additionalProperties = paginationMetadata.additionalProperties.toMutableMap() } fun hasMore(hasMore: Boolean) = hasMore(JsonField.of(hasMore)) - @JsonProperty("has_more") - @ExcludeMissing fun hasMore(hasMore: JsonField) = apply { this.hasMore = hasMore } fun nextCursor(nextCursor: String) = nextCursor(JsonField.of(nextCursor)) - @JsonProperty("next_cursor") - @ExcludeMissing fun nextCursor(nextCursor: JsonField) = apply { this.nextCursor = nextCursor } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PaginationMetadata = PaginationMetadata( hasMore, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PercentageDiscount.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PercentageDiscount.kt index 44df27f7..9afe71de 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PercentageDiscount.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PercentageDiscount.kt @@ -6,31 +6,37 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = PercentageDiscount.Builder::class) @NoAutoDetect class PercentageDiscount +@JsonCreator private constructor( - private val discountType: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -65,6 +71,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscount = apply { if (!validated) { discountType() @@ -92,17 +100,15 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscount: PercentageDiscount) = apply { - this.discountType = percentageDiscount.discountType - this.appliesToPriceIds = percentageDiscount.appliesToPriceIds - this.reason = percentageDiscount.reason + discountType = percentageDiscount.discountType + appliesToPriceIds = percentageDiscount.appliesToPriceIds + reason = percentageDiscount.reason this.percentageDiscount = percentageDiscount.percentageDiscount - additionalProperties(percentageDiscount.additionalProperties) + additionalProperties = percentageDiscount.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -118,16 +124,12 @@ private constructor( * List of price_ids that this discount applies to. For plan/plan phase discounts, this can * be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun reason(reason: String) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } /** Only available if discount_type is `percentage`. This is a number between 0 and 1. */ @@ -135,26 +137,29 @@ private constructor( percentageDiscount(JsonField.of(percentageDiscount)) /** Only available if discount_type is `percentage`. This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscount = PercentageDiscount( discountType, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Plan.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Plan.kt index e181231e..42ea58a9 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Plan.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Plan.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -34,39 +35,81 @@ import kotlin.jvm.optionals.getOrNull * subscribed to by a customer. Plans define the billing behavior of the subscription. You can see * more about how to configure prices in the [Price resource](/reference/price). */ -@JsonDeserialize(builder = Plan.Builder::class) @NoAutoDetect class Plan +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val description: JsonField, - private val maximumAmount: JsonField, - private val minimumAmount: JsonField, - private val createdAt: JsonField, - private val status: JsonField, - private val maximum: JsonField, - private val minimum: JsonField, - private val discount: JsonField, - private val product: JsonField, - private val version: JsonField, - private val trialConfig: JsonField, - private val planPhases: JsonField>, - private val basePlan: JsonField, - private val basePlanId: JsonField, - private val externalPlanId: JsonField, - private val currency: JsonField, - private val invoicingCurrency: JsonField, - private val netTerms: JsonField, - private val defaultInvoiceMemo: JsonField, - private val prices: JsonField>, - private val adjustments: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") @ExcludeMissing private val name: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("product") + @ExcludeMissing + private val product: JsonField = JsonMissing.of(), + @JsonProperty("version") + @ExcludeMissing + private val version: JsonField = JsonMissing.of(), + @JsonProperty("trial_config") + @ExcludeMissing + private val trialConfig: JsonField = JsonMissing.of(), + @JsonProperty("plan_phases") + @ExcludeMissing + private val planPhases: JsonField> = JsonMissing.of(), + @JsonProperty("base_plan") + @ExcludeMissing + private val basePlan: JsonField = JsonMissing.of(), + @JsonProperty("base_plan_id") + @ExcludeMissing + private val basePlanId: JsonField = JsonMissing.of(), + @JsonProperty("external_plan_id") + @ExcludeMissing + private val externalPlanId: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("invoicing_currency") + @ExcludeMissing + private val invoicingCurrency: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("prices") + @ExcludeMissing + private val prices: JsonField> = JsonMissing.of(), + @JsonProperty("adjustments") + @ExcludeMissing + private val adjustments: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -246,6 +289,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Plan = apply { if (!validated) { metadata().validate() @@ -313,31 +358,31 @@ private constructor( @JvmSynthetic internal fun from(plan: Plan) = apply { - this.metadata = plan.metadata - this.id = plan.id - this.name = plan.name - this.description = plan.description - this.maximumAmount = plan.maximumAmount - this.minimumAmount = plan.minimumAmount - this.createdAt = plan.createdAt - this.status = plan.status - this.maximum = plan.maximum - this.minimum = plan.minimum - this.discount = plan.discount - this.product = plan.product - this.version = plan.version - this.trialConfig = plan.trialConfig - this.planPhases = plan.planPhases - this.basePlan = plan.basePlan - this.basePlanId = plan.basePlanId - this.externalPlanId = plan.externalPlanId - this.currency = plan.currency - this.invoicingCurrency = plan.invoicingCurrency - this.netTerms = plan.netTerms - this.defaultInvoiceMemo = plan.defaultInvoiceMemo - this.prices = plan.prices - this.adjustments = plan.adjustments - additionalProperties(plan.additionalProperties) + metadata = plan.metadata + id = plan.id + name = plan.name + description = plan.description + maximumAmount = plan.maximumAmount + minimumAmount = plan.minimumAmount + createdAt = plan.createdAt + status = plan.status + maximum = plan.maximum + minimum = plan.minimum + discount = plan.discount + product = plan.product + version = plan.version + trialConfig = plan.trialConfig + planPhases = plan.planPhases + basePlan = plan.basePlan + basePlanId = plan.basePlanId + externalPlanId = plan.externalPlanId + currency = plan.currency + invoicingCurrency = plan.invoicingCurrency + netTerms = plan.netTerms + defaultInvoiceMemo = plan.defaultInvoiceMemo + prices = plan.prices + adjustments = plan.adjustments + additionalProperties = plan.additionalProperties.toMutableMap() } /** @@ -352,104 +397,74 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun product(product: Product) = product(JsonField.of(product)) - @JsonProperty("product") - @ExcludeMissing fun product(product: JsonField) = apply { this.product = product } fun version(version: Long) = version(JsonField.of(version)) - @JsonProperty("version") - @ExcludeMissing fun version(version: JsonField) = apply { this.version = version } fun trialConfig(trialConfig: TrialConfig) = trialConfig(JsonField.of(trialConfig)) - @JsonProperty("trial_config") - @ExcludeMissing fun trialConfig(trialConfig: JsonField) = apply { this.trialConfig = trialConfig } fun planPhases(planPhases: List) = planPhases(JsonField.of(planPhases)) - @JsonProperty("plan_phases") - @ExcludeMissing fun planPhases(planPhases: JsonField>) = apply { this.planPhases = planPhases } fun basePlan(basePlan: BasePlan) = basePlan(JsonField.of(basePlan)) - @JsonProperty("base_plan") - @ExcludeMissing fun basePlan(basePlan: JsonField) = apply { this.basePlan = basePlan } /** @@ -462,8 +477,6 @@ private constructor( * The parent plan id if the given plan was created by overriding one or more of the * parent's prices */ - @JsonProperty("base_plan_id") - @ExcludeMissing fun basePlanId(basePlanId: JsonField) = apply { this.basePlanId = basePlanId } /** @@ -478,8 +491,6 @@ private constructor( * alias for this Plan. Use this field to identify a plan by an existing identifier in your * system. */ - @JsonProperty("external_plan_id") - @ExcludeMissing fun externalPlanId(externalPlanId: JsonField) = apply { this.externalPlanId = externalPlanId } @@ -492,8 +503,6 @@ private constructor( /** * An ISO 4217 currency string or custom pricing unit (`credits`) for this plan's prices. */ - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } /** @@ -507,8 +516,6 @@ private constructor( * An ISO 4217 currency string for which this plan is billed in. Matches `currency` unless * `currency` is a custom pricing unit. */ - @JsonProperty("invoicing_currency") - @ExcludeMissing fun invoicingCurrency(invoicingCurrency: JsonField) = apply { this.invoicingCurrency = invoicingCurrency } @@ -527,8 +534,6 @@ private constructor( * customer has a month to pay the invoice before its overdue. Note that individual * subscriptions or invoices may set a different net terms configuration. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } /** @@ -542,8 +547,6 @@ private constructor( * The default memo text on the invoices corresponding to subscriptions on this plan. Note * that each subscription may configure its own memo. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -558,8 +561,6 @@ private constructor( * Prices for this plan. If the plan has phases, this includes prices across all phases of * the plan. */ - @JsonProperty("prices") - @ExcludeMissing fun prices(prices: JsonField>) = apply { this.prices = prices } /** @@ -572,26 +573,29 @@ private constructor( * Adjustments for this plan. If the plan has phases, this includes adjustments across all * phases of the plan. */ - @JsonProperty("adjustments") - @ExcludeMissing fun adjustments(adjustments: JsonField>) = apply { this.adjustments = adjustments } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Plan = Plan( metadata, @@ -853,22 +857,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -927,6 +944,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -960,20 +979,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -987,8 +1005,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments that * apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -998,8 +1014,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1009,8 +1023,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1019,15 +1031,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1043,20 +1051,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a given * billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1064,6 +1069,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1146,22 +1159,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1222,6 +1248,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1256,20 +1284,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1283,8 +1310,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments that * apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1294,8 +1319,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1305,8 +1328,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1315,15 +1336,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1339,20 +1356,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1360,6 +1374,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1442,22 +1464,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1516,6 +1551,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1549,20 +1586,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1576,8 +1612,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments that * apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1587,8 +1621,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1598,8 +1630,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1608,15 +1638,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1632,20 +1658,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment applies * to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1653,6 +1676,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -1735,23 +1766,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1816,6 +1862,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -1851,21 +1899,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1879,8 +1925,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments that * apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1890,8 +1934,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1901,8 +1943,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1911,15 +1951,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1935,8 +1971,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -1945,18 +1979,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1964,6 +1995,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2047,22 +2086,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2121,6 +2173,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2154,20 +2208,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2181,8 +2233,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments that * apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2192,8 +2242,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2203,8 +2251,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2213,15 +2259,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2237,20 +2279,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2258,6 +2297,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2341,18 +2388,21 @@ private constructor( } } - @JsonDeserialize(builder = BasePlan.Builder::class) @NoAutoDetect class BasePlan + @JsonCreator private constructor( - private val id: JsonField, - private val externalPlanId: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_plan_id") + @ExcludeMissing + private val externalPlanId: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): Optional = Optional.ofNullable(id.getNullable("id")) /** @@ -2380,6 +2430,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BasePlan = apply { if (!validated) { id() @@ -2405,16 +2457,14 @@ private constructor( @JvmSynthetic internal fun from(basePlan: BasePlan) = apply { - this.id = basePlan.id - this.externalPlanId = basePlan.externalPlanId - this.name = basePlan.name - additionalProperties(basePlan.additionalProperties) + id = basePlan.id + externalPlanId = basePlan.externalPlanId + name = basePlan.name + additionalProperties = basePlan.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2430,32 +2480,33 @@ private constructor( * alias for this Plan. Use this field to identify a plan by an existing identifier in * your system. */ - @JsonProperty("external_plan_id") - @ExcludeMissing fun externalPlanId(externalPlanId: JsonField) = apply { this.externalPlanId = externalPlanId } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BasePlan = BasePlan( id, @@ -2483,17 +2534,20 @@ private constructor( "BasePlan{id=$id, externalPlanId=$externalPlanId, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -2519,6 +2573,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -2542,17 +2598,15 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -2568,26 +2622,29 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase maximums, * this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -2619,19 +2676,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -2651,23 +2709,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2688,17 +2751,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -2724,6 +2790,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -2747,17 +2815,15 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2773,26 +2839,29 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase minimums, * this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -2819,26 +2888,45 @@ private constructor( "Minimum{minimumAmount=$minimumAmount, appliesToPriceIds=$appliesToPriceIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PlanPhase.Builder::class) @NoAutoDetect class PlanPhase + @JsonCreator private constructor( - private val id: JsonField, - private val description: JsonField, - private val duration: JsonField, - private val durationUnit: JsonField, - private val name: JsonField, - private val order: JsonField, - private val minimum: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val minimumAmount: JsonField, - private val discount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("description") + @ExcludeMissing + private val description: JsonField = JsonMissing.of(), + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("order") + @ExcludeMissing + private val order: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun description(): Optional = @@ -2901,6 +2989,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PlanPhase = apply { if (!validated) { id() @@ -2942,30 +3032,26 @@ private constructor( @JvmSynthetic internal fun from(planPhase: PlanPhase) = apply { - this.id = planPhase.id - this.description = planPhase.description - this.duration = planPhase.duration - this.durationUnit = planPhase.durationUnit - this.name = planPhase.name - this.order = planPhase.order - this.minimum = planPhase.minimum - this.maximum = planPhase.maximum - this.maximumAmount = planPhase.maximumAmount - this.minimumAmount = planPhase.minimumAmount - this.discount = planPhase.discount - additionalProperties(planPhase.additionalProperties) + id = planPhase.id + description = planPhase.description + duration = planPhase.duration + durationUnit = planPhase.durationUnit + name = planPhase.name + order = planPhase.order + minimum = planPhase.minimum + maximum = planPhase.maximum + maximumAmount = planPhase.maximumAmount + minimumAmount = planPhase.minimumAmount + discount = planPhase.discount + additionalProperties = planPhase.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun description(description: String) = description(JsonField.of(description)) - @JsonProperty("description") - @ExcludeMissing fun description(description: JsonField) = apply { this.description = description } @@ -2980,80 +3066,67 @@ private constructor( * How many terms of length `duration_unit` this phase is active for. If null, this * phase is evergreen and active indefinitely */ - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } /** Determines the ordering of the phase in a plan's lifecycle. 1 = first phase. */ fun order(order: Long) = order(JsonField.of(order)) /** Determines the ordering of the phase in a plan's lifecycle. 1 = first phase. */ - @JsonProperty("order") - @ExcludeMissing fun order(order: JsonField) = apply { this.order = order } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PlanPhase = PlanPhase( id, @@ -3146,17 +3219,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -3182,6 +3258,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -3205,9 +3283,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -3215,8 +3293,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -3232,20 +3308,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3253,6 +3326,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -3279,17 +3360,20 @@ private constructor( "Maximum{maximumAmount=$maximumAmount, appliesToPriceIds=$appliesToPriceIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -3315,6 +3399,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -3338,9 +3424,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -3348,8 +3434,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -3365,20 +3449,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3386,6 +3467,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -3430,18 +3519,21 @@ private constructor( "PlanPhase{id=$id, description=$description, duration=$duration, durationUnit=$durationUnit, name=$name, order=$order, minimum=$minimum, maximum=$maximum, maximumAmount=$maximumAmount, minimumAmount=$minimumAmount, discount=$discount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Product.Builder::class) @NoAutoDetect class Product + @JsonCreator private constructor( - private val createdAt: JsonField, - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun createdAt(): OffsetDateTime = createdAt.getRequired("created_at") fun id(): String = id.getRequired("id") @@ -3458,6 +3550,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Product = apply { if (!validated) { createdAt() @@ -3483,46 +3577,45 @@ private constructor( @JvmSynthetic internal fun from(product: Product) = apply { - this.createdAt = product.createdAt - this.id = product.id - this.name = product.name - additionalProperties(product.additionalProperties) + createdAt = product.createdAt + id = product.id + name = product.name + additionalProperties = product.additionalProperties.toMutableMap() } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Product = Product( createdAt, @@ -3613,17 +3706,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialConfig.Builder::class) @NoAutoDetect class TrialConfig + @JsonCreator private constructor( - private val trialPeriod: JsonField, - private val trialPeriodUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("trial_period") + @ExcludeMissing + private val trialPeriod: JsonField = JsonMissing.of(), + @JsonProperty("trial_period_unit") + @ExcludeMissing + private val trialPeriodUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun trialPeriod(): Optional = Optional.ofNullable(trialPeriod.getNullable("trial_period")) @@ -3637,6 +3733,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialConfig = apply { if (!validated) { trialPeriod() @@ -3660,40 +3758,41 @@ private constructor( @JvmSynthetic internal fun from(trialConfig: TrialConfig) = apply { - this.trialPeriod = trialConfig.trialPeriod - this.trialPeriodUnit = trialConfig.trialPeriodUnit - additionalProperties(trialConfig.additionalProperties) + trialPeriod = trialConfig.trialPeriod + trialPeriodUnit = trialConfig.trialPeriodUnit + additionalProperties = trialConfig.additionalProperties.toMutableMap() } fun trialPeriod(trialPeriod: Long) = trialPeriod(JsonField.of(trialPeriod)) - @JsonProperty("trial_period") - @ExcludeMissing fun trialPeriod(trialPeriod: JsonField) = apply { this.trialPeriod = trialPeriod } fun trialPeriodUnit(trialPeriodUnit: TrialPeriodUnit) = trialPeriodUnit(JsonField.of(trialPeriodUnit)) - @JsonProperty("trial_period_unit") - @ExcludeMissing fun trialPeriodUnit(trialPeriodUnit: JsonField) = apply { this.trialPeriodUnit = trialPeriodUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialConfig = TrialConfig( trialPeriod, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanCreateParams.kt index 6bf6a032..dee2d0d2 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanCreateParams.kt @@ -18,12 +18,12 @@ import com.withorb.api.core.BaseSerializer import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField -import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -86,55 +86,58 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = PlanCreateBody.Builder::class) @NoAutoDetect class PlanCreateBody + @JsonCreator internal constructor( - private val currency: String?, - private val name: String?, - private val prices: List?, - private val defaultInvoiceMemo: String?, - private val externalPlanId: String?, - private val metadata: Metadata?, - private val netTerms: Long?, - private val status: Status?, - private val additionalProperties: Map, + @JsonProperty("currency") private val currency: String, + @JsonProperty("name") private val name: String, + @JsonProperty("prices") private val prices: List, + @JsonProperty("default_invoice_memo") private val defaultInvoiceMemo: String?, + @JsonProperty("external_plan_id") private val externalPlanId: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("net_terms") private val netTerms: Long?, + @JsonProperty("status") private val status: Status?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** An ISO 4217 currency string for invoices generated by subscriptions on this plan. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** * Prices for this plan. If the plan has phases, this includes prices across all phases of * the plan. */ - @JsonProperty("prices") fun prices(): List? = prices + @JsonProperty("prices") fun prices(): List = prices /** Free-form text which is available on the invoice PDF and the Orb invoice portal. */ - @JsonProperty("default_invoice_memo") fun defaultInvoiceMemo(): String? = defaultInvoiceMemo + @JsonProperty("default_invoice_memo") + fun defaultInvoiceMemo(): Optional = Optional.ofNullable(defaultInvoiceMemo) - @JsonProperty("external_plan_id") fun externalPlanId(): String? = externalPlanId + @JsonProperty("external_plan_id") + fun externalPlanId(): Optional = Optional.ofNullable(externalPlanId) /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The net terms determines the difference between the invoice date and the issue date for * the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") fun netTerms(): Long? = netTerms + @JsonProperty("net_terms") fun netTerms(): Optional = Optional.ofNullable(netTerms) /** * The status of the plan to create (either active or draft). If not specified, this * defaults to active. */ - @JsonProperty("status") fun status(): Status? = status + @JsonProperty("status") fun status(): Optional = Optional.ofNullable(status) @JsonAnyGetter @ExcludeMissing @@ -161,36 +164,33 @@ constructor( @JvmSynthetic internal fun from(planCreateBody: PlanCreateBody) = apply { - this.currency = planCreateBody.currency - this.name = planCreateBody.name - this.prices = planCreateBody.prices - this.defaultInvoiceMemo = planCreateBody.defaultInvoiceMemo - this.externalPlanId = planCreateBody.externalPlanId - this.metadata = planCreateBody.metadata - this.netTerms = planCreateBody.netTerms - this.status = planCreateBody.status - additionalProperties(planCreateBody.additionalProperties) + currency = planCreateBody.currency + name = planCreateBody.name + prices = planCreateBody.prices.toMutableList() + defaultInvoiceMemo = planCreateBody.defaultInvoiceMemo + externalPlanId = planCreateBody.externalPlanId + metadata = planCreateBody.metadata + netTerms = planCreateBody.netTerms + status = planCreateBody.status + additionalProperties = planCreateBody.additionalProperties.toMutableMap() } /** An ISO 4217 currency string for invoices generated by subscriptions on this plan. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * Prices for this plan. If the plan has phases, this includes prices across all phases * of the plan. */ - @JsonProperty("prices") fun prices(prices: List) = apply { this.prices = prices } + fun prices(prices: List) = apply { this.prices = prices } /** Free-form text which is available on the invoice PDF and the Orb invoice portal. */ - @JsonProperty("default_invoice_memo") fun defaultInvoiceMemo(defaultInvoiceMemo: String) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } - @JsonProperty("external_plan_id") fun externalPlanId(externalPlanId: String) = apply { this.externalPlanId = externalPlanId } @@ -200,36 +200,39 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** * The net terms determines the difference between the invoice date and the issue date * for the invoice. If you intend the invoice to be due on issue, set this to 0. */ - @JsonProperty("net_terms") fun netTerms(netTerms: Long) = apply { this.netTerms = netTerms } /** * The status of the plan to create (either active or draft). If not specified, this * defaults to active. */ - @JsonProperty("status") fun status(status: Status) = apply { this.status = status } + fun status(status: Status) = apply { this.status = status } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PlanCreateBody = PlanCreateBody( checkNotNull(currency) { "`currency` is required but was not set" }, @@ -512,8 +515,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newPlanUnitPrice(): Optional = Optional.ofNullable(newPlanUnitPrice) fun newPlanPackagePrice(): Optional = @@ -737,58 +738,6 @@ constructor( } } - fun validate(): Price = apply { - if (!validated) { - if ( - newPlanUnitPrice == null && - newPlanPackagePrice == null && - newPlanMatrixPrice == null && - newPlanTieredPrice == null && - newPlanTieredBpsPrice == null && - newPlanBpsPrice == null && - newPlanBulkBpsPrice == null && - newPlanBulkPrice == null && - newPlanThresholdTotalAmountPrice == null && - newPlanTieredPackagePrice == null && - newPlanTieredWithMinimumPrice == null && - newPlanUnitWithPercentPrice == null && - newPlanPackageWithAllocationPrice == null && - newPlanTierWithProrationPrice == null && - newPlanUnitWithProrationPrice == null && - newPlanGroupedAllocationPrice == null && - newPlanGroupedWithProratedMinimumPrice == null && - newPlanGroupedWithMeteredMinimumPrice == null && - newPlanMatrixWithDisplayNamePrice == null && - newPlanBulkWithProrationPrice == null && - newPlanGroupedTieredPackagePrice == null - ) { - throw OrbInvalidDataException("Unknown Price: $_json") - } - newPlanUnitPrice?.validate() - newPlanPackagePrice?.validate() - newPlanMatrixPrice?.validate() - newPlanTieredPrice?.validate() - newPlanTieredBpsPrice?.validate() - newPlanBpsPrice?.validate() - newPlanBulkBpsPrice?.validate() - newPlanBulkPrice?.validate() - newPlanThresholdTotalAmountPrice?.validate() - newPlanTieredPackagePrice?.validate() - newPlanTieredWithMinimumPrice?.validate() - newPlanUnitWithPercentPrice?.validate() - newPlanPackageWithAllocationPrice?.validate() - newPlanTierWithProrationPrice?.validate() - newPlanUnitWithProrationPrice?.validate() - newPlanGroupedAllocationPrice?.validate() - newPlanGroupedWithProratedMinimumPrice?.validate() - newPlanGroupedWithMeteredMinimumPrice?.validate() - newPlanMatrixWithDisplayNamePrice?.validate() - newPlanBulkWithProrationPrice?.validate() - newPlanGroupedTieredPackagePrice?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -1026,130 +975,92 @@ constructor( when (modelType) { "unit" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Price(newPlanUnitPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanUnitPrice = it, _json = json) + } } "package" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanPackagePrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanPackagePrice = it, _json = json) + } } "matrix" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Price(newPlanMatrixPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanMatrixPrice = it, _json = json) + } } "tiered" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Price(newPlanTieredPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanTieredPrice = it, _json = json) + } } "tiered_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanTieredBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanTieredBpsPrice = it, _json = json) + } } "bps" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Price(newPlanBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanBpsPrice = it, _json = json) + } } "bulk_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanBulkBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanBulkBpsPrice = it, _json = json) + } } "bulk" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Price(newPlanBulkPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanBulkPrice = it, _json = json) + } } "threshold_total_amount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newPlanThresholdTotalAmountPrice = it, _json = json) } } "tiered_package" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanTieredPackagePrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanTieredPackagePrice = it, _json = json) + } } "tiered_with_minimum" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanTieredWithMinimumPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanTieredWithMinimumPrice = it, _json = json) + } } "unit_with_percent" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanUnitWithPercentPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanUnitWithPercentPrice = it, _json = json) + } } "package_with_allocation" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newPlanPackageWithAllocationPrice = it, _json = json) } } "tiered_with_proration" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanTierWithProrationPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanTierWithProrationPrice = it, _json = json) + } } "unit_with_proration" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanUnitWithProrationPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanUnitWithProrationPrice = it, _json = json) + } } "grouped_allocation" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanGroupedAllocationPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanGroupedAllocationPrice = it, _json = json) + } } "grouped_with_prorated_minimum" -> { tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newPlanGroupedWithProratedMinimumPrice = it, @@ -1161,9 +1072,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newPlanGroupedWithMeteredMinimumPrice = it, @@ -1172,25 +1081,18 @@ constructor( } } "matrix_with_display_name" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newPlanMatrixWithDisplayNamePrice = it, _json = json) } } "bulk_with_proration" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newPlanBulkWithProrationPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newPlanBulkWithProrationPrice = it, _json = json) + } } "grouped_tiered_package" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newPlanGroupedTieredPackagePrice = it, _json = json) } @@ -1254,206 +1156,109 @@ constructor( } } - @JsonDeserialize(builder = NewPlanUnitPrice.Builder::class) @NoAutoDetect class NewPlanUnitPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_config") private val unitConfig: UnitConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitConfig(): UnitConfig = unitConfig.getRequired("unit_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("unit_config") @ExcludeMissing fun _unitConfig() = unitConfig + @JsonProperty("unit_config") fun unitConfig(): UnitConfig = unitConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanUnitPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1463,43 +1268,41 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitConfig: UnitConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanUnitPrice: NewPlanUnitPrice) = apply { - this.metadata = newPlanUnitPrice.metadata - this.externalPriceId = newPlanUnitPrice.externalPriceId - this.name = newPlanUnitPrice.name - this.billableMetricId = newPlanUnitPrice.billableMetricId - this.itemId = newPlanUnitPrice.itemId - this.billedInAdvance = newPlanUnitPrice.billedInAdvance - this.fixedPriceQuantity = newPlanUnitPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanUnitPrice.invoiceGroupingKey - this.cadence = newPlanUnitPrice.cadence - this.billingCycleConfiguration = newPlanUnitPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = newPlanUnitPrice.invoicingCycleConfiguration - this.conversionRate = newPlanUnitPrice.conversionRate - this.modelType = newPlanUnitPrice.modelType - this.unitConfig = newPlanUnitPrice.unitConfig - this.currency = newPlanUnitPrice.currency - additionalProperties(newPlanUnitPrice.additionalProperties) + metadata = newPlanUnitPrice.metadata + externalPriceId = newPlanUnitPrice.externalPriceId + name = newPlanUnitPrice.name + billableMetricId = newPlanUnitPrice.billableMetricId + itemId = newPlanUnitPrice.itemId + billedInAdvance = newPlanUnitPrice.billedInAdvance + fixedPriceQuantity = newPlanUnitPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanUnitPrice.invoiceGroupingKey + cadence = newPlanUnitPrice.cadence + billingCycleConfiguration = newPlanUnitPrice.billingCycleConfiguration + invoicingCycleConfiguration = newPlanUnitPrice.invoicingCycleConfiguration + conversionRate = newPlanUnitPrice.conversionRate + modelType = newPlanUnitPrice.modelType + unitConfig = newPlanUnitPrice.unitConfig + currency = newPlanUnitPrice.currency + additionalProperties = newPlanUnitPrice.additionalProperties.toMutableMap() } /** @@ -1507,75 +1310,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -1583,37 +1343,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -1621,16 +1361,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -1639,67 +1369,30 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun unitConfig(unitConfig: UnitConfig) = unitConfig(JsonField.of(unitConfig)) - - @JsonProperty("unit_config") - @ExcludeMissing - fun unitConfig(unitConfig: JsonField) = apply { - this.unitConfig = unitConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun unitConfig(unitConfig: UnitConfig) = apply { this.unitConfig = unitConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1707,22 +1400,30 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanUnitPrice = NewPlanUnitPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitConfig) { "`unitConfig` is required but was not set" }, currency, additionalProperties.toImmutable(), ) @@ -1860,33 +1561,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitConfig.Builder::class) @NoAutoDetect class UnitConfig + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Rate per unit of usage */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Rate per unit of usage */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitConfig = apply { - if (!validated) { - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1896,33 +1586,25 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(unitConfig: UnitConfig) = apply { - this.unitAmount = unitConfig.unitAmount - additionalProperties(unitConfig.additionalProperties) + unitAmount = unitConfig.unitAmount + additionalProperties = unitConfig.additionalProperties.toMutableMap() } /** Rate per unit of usage */ - fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - - /** Rate per unit of usage */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { - this.unitAmount = unitAmount - } + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1930,8 +1612,19 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitConfig = - UnitConfig(unitAmount, additionalProperties.toImmutable()) + UnitConfig( + checkNotNull(unitAmount) { "`unitAmount` is required but was not set" }, + additionalProperties.toImmutable() + ) } override fun equals(other: Any?): Boolean { @@ -1955,41 +1648,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1999,45 +1677,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2045,10 +1712,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -2133,41 +1810,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2177,45 +1839,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2223,10 +1874,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -2312,25 +1973,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2344,17 +1998,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2362,6 +2015,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2400,206 +2061,109 @@ constructor( "NewPlanUnitPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitConfig=$unitConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanPackagePrice.Builder::class) @NoAutoDetect class NewPlanPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_config") private val packageConfig: PackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageConfig(): PackageConfig = packageConfig.getRequired("package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("package_config") @ExcludeMissing fun _packageConfig() = packageConfig + @JsonProperty("package_config") fun packageConfig(): PackageConfig = packageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2609,44 +2173,41 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageConfig: PackageConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanPackagePrice: NewPlanPackagePrice) = apply { - this.metadata = newPlanPackagePrice.metadata - this.externalPriceId = newPlanPackagePrice.externalPriceId - this.name = newPlanPackagePrice.name - this.billableMetricId = newPlanPackagePrice.billableMetricId - this.itemId = newPlanPackagePrice.itemId - this.billedInAdvance = newPlanPackagePrice.billedInAdvance - this.fixedPriceQuantity = newPlanPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanPackagePrice.invoiceGroupingKey - this.cadence = newPlanPackagePrice.cadence - this.billingCycleConfiguration = newPlanPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newPlanPackagePrice.invoicingCycleConfiguration - this.conversionRate = newPlanPackagePrice.conversionRate - this.modelType = newPlanPackagePrice.modelType - this.packageConfig = newPlanPackagePrice.packageConfig - this.currency = newPlanPackagePrice.currency - additionalProperties(newPlanPackagePrice.additionalProperties) + metadata = newPlanPackagePrice.metadata + externalPriceId = newPlanPackagePrice.externalPriceId + name = newPlanPackagePrice.name + billableMetricId = newPlanPackagePrice.billableMetricId + itemId = newPlanPackagePrice.itemId + billedInAdvance = newPlanPackagePrice.billedInAdvance + fixedPriceQuantity = newPlanPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newPlanPackagePrice.invoiceGroupingKey + cadence = newPlanPackagePrice.cadence + billingCycleConfiguration = newPlanPackagePrice.billingCycleConfiguration + invoicingCycleConfiguration = newPlanPackagePrice.invoicingCycleConfiguration + conversionRate = newPlanPackagePrice.conversionRate + modelType = newPlanPackagePrice.modelType + packageConfig = newPlanPackagePrice.packageConfig + currency = newPlanPackagePrice.currency + additionalProperties = newPlanPackagePrice.additionalProperties.toMutableMap() } /** @@ -2654,75 +2215,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -2730,37 +2248,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -2768,16 +2266,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -2786,43 +2274,16 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun packageConfig(packageConfig: PackageConfig) = - packageConfig(JsonField.of(packageConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("package_config") - @ExcludeMissing - fun packageConfig(packageConfig: JsonField) = apply { + fun packageConfig(packageConfig: PackageConfig) = apply { this.packageConfig = packageConfig } @@ -2830,24 +2291,15 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2855,22 +2307,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanPackagePrice = NewPlanPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageConfig) { + "`packageConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -3008,47 +2470,29 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageConfig.Builder::class) @NoAutoDetect class PackageConfig + @JsonCreator private constructor( - private val packageAmount: JsonField, - private val packageSize: JsonField, - private val additionalProperties: Map, + @JsonProperty("package_amount") private val packageAmount: String, + @JsonProperty("package_size") private val packageSize: Long, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** A currency amount to rate usage by */ - fun packageAmount(): String = packageAmount.getRequired("package_amount") + @JsonProperty("package_amount") fun packageAmount(): String = packageAmount /** * An integer amount to represent package size. For example, 1000 here would divide * usage by 1000 before multiplying by package_amount in rating */ - fun packageSize(): Long = packageSize.getRequired("package_size") - - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") @ExcludeMissing fun _packageAmount() = packageAmount - - /** - * An integer amount to represent package size. For example, 1000 here would divide - * usage by 1000 before multiplying by package_amount in rating - */ - @JsonProperty("package_size") @ExcludeMissing fun _packageSize() = packageSize + @JsonProperty("package_size") fun packageSize(): Long = packageSize @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageConfig = apply { - if (!validated) { - packageAmount() - packageSize() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -3058,25 +2502,19 @@ constructor( class Builder { - private var packageAmount: JsonField = JsonMissing.of() - private var packageSize: JsonField = JsonMissing.of() + private var packageAmount: String? = null + private var packageSize: Long? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(packageConfig: PackageConfig) = apply { - this.packageAmount = packageConfig.packageAmount - this.packageSize = packageConfig.packageSize - additionalProperties(packageConfig.additionalProperties) + packageAmount = packageConfig.packageAmount + packageSize = packageConfig.packageSize + additionalProperties = packageConfig.additionalProperties.toMutableMap() } /** A currency amount to rate usage by */ - fun packageAmount(packageAmount: String) = - packageAmount(JsonField.of(packageAmount)) - - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun packageAmount(packageAmount: JsonField) = apply { + fun packageAmount(packageAmount: String) = apply { this.packageAmount = packageAmount } @@ -3084,26 +2522,15 @@ constructor( * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - fun packageSize(packageSize: Long) = packageSize(JsonField.of(packageSize)) - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - @JsonProperty("package_size") - @ExcludeMissing - fun packageSize(packageSize: JsonField) = apply { - this.packageSize = packageSize - } + fun packageSize(packageSize: Long) = apply { this.packageSize = packageSize } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3111,10 +2538,22 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageConfig = PackageConfig( - packageAmount, - packageSize, + checkNotNull(packageAmount) { + "`packageAmount` is required but was not set" + }, + checkNotNull(packageSize) { + "`packageSize` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -3140,41 +2579,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -3184,45 +2608,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3230,10 +2643,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -3318,41 +2741,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -3362,45 +2770,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3408,10 +2805,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -3497,25 +2904,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -3529,17 +2929,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3547,6 +2946,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -3585,206 +2992,109 @@ constructor( "NewPlanPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageConfig=$packageConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanMatrixPrice.Builder::class) @NoAutoDetect class NewPlanMatrixPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val matrixConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_config") private val matrixConfig: MatrixConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun matrixConfig(): MatrixConfig = matrixConfig.getRequired("matrix_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("matrix_config") @ExcludeMissing fun _matrixConfig() = matrixConfig + @JsonProperty("matrix_config") fun matrixConfig(): MatrixConfig = matrixConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanMatrixPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - matrixConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -3794,44 +3104,41 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var matrixConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var matrixConfig: MatrixConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanMatrixPrice: NewPlanMatrixPrice) = apply { - this.metadata = newPlanMatrixPrice.metadata - this.externalPriceId = newPlanMatrixPrice.externalPriceId - this.name = newPlanMatrixPrice.name - this.billableMetricId = newPlanMatrixPrice.billableMetricId - this.itemId = newPlanMatrixPrice.itemId - this.billedInAdvance = newPlanMatrixPrice.billedInAdvance - this.fixedPriceQuantity = newPlanMatrixPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanMatrixPrice.invoiceGroupingKey - this.cadence = newPlanMatrixPrice.cadence - this.billingCycleConfiguration = newPlanMatrixPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newPlanMatrixPrice.invoicingCycleConfiguration - this.conversionRate = newPlanMatrixPrice.conversionRate - this.modelType = newPlanMatrixPrice.modelType - this.matrixConfig = newPlanMatrixPrice.matrixConfig - this.currency = newPlanMatrixPrice.currency - additionalProperties(newPlanMatrixPrice.additionalProperties) + metadata = newPlanMatrixPrice.metadata + externalPriceId = newPlanMatrixPrice.externalPriceId + name = newPlanMatrixPrice.name + billableMetricId = newPlanMatrixPrice.billableMetricId + itemId = newPlanMatrixPrice.itemId + billedInAdvance = newPlanMatrixPrice.billedInAdvance + fixedPriceQuantity = newPlanMatrixPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanMatrixPrice.invoiceGroupingKey + cadence = newPlanMatrixPrice.cadence + billingCycleConfiguration = newPlanMatrixPrice.billingCycleConfiguration + invoicingCycleConfiguration = newPlanMatrixPrice.invoicingCycleConfiguration + conversionRate = newPlanMatrixPrice.conversionRate + modelType = newPlanMatrixPrice.modelType + matrixConfig = newPlanMatrixPrice.matrixConfig + currency = newPlanMatrixPrice.currency + additionalProperties = newPlanMatrixPrice.additionalProperties.toMutableMap() } /** @@ -3839,75 +3146,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -3915,37 +3179,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -3953,16 +3197,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -3971,43 +3205,16 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun matrixConfig(matrixConfig: MatrixConfig) = - matrixConfig(JsonField.of(matrixConfig)) - - @JsonProperty("matrix_config") - @ExcludeMissing - fun matrixConfig(matrixConfig: JsonField) = apply { + fun matrixConfig(matrixConfig: MatrixConfig) = apply { this.matrixConfig = matrixConfig } @@ -4015,24 +3222,15 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4040,22 +3238,30 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanMatrixPrice = NewPlanMatrixPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - matrixConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(matrixConfig) { "`matrixConfig` is required but was not set" }, currency, additionalProperties.toImmutable(), ) @@ -4142,56 +3348,33 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensions: JsonField>, - private val defaultUnitAmount: JsonField, - private val matrixValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("default_unit_amount") private val defaultUnitAmount: String, + @JsonProperty("matrix_values") private val matrixValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** One or two event property values to evaluate matrix groups by */ - fun dimensions(): List = dimensions.getRequired("dimensions") - - /** - * Default per unit rate for any usage not bucketed into a specified matrix_value - */ - fun defaultUnitAmount(): String = - defaultUnitAmount.getRequired("default_unit_amount") - - /** Matrix values for specified matrix grouping keys */ - fun matrixValues(): List = matrixValues.getRequired("matrix_values") - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") @ExcludeMissing fun _dimensions() = dimensions + @JsonProperty("dimensions") fun dimensions(): List = dimensions /** * Default per unit rate for any usage not bucketed into a specified matrix_value */ @JsonProperty("default_unit_amount") - @ExcludeMissing - fun _defaultUnitAmount() = defaultUnitAmount + fun defaultUnitAmount(): String = defaultUnitAmount /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") @ExcludeMissing fun _matrixValues() = matrixValues + @JsonProperty("matrix_values") fun matrixValues(): List = matrixValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixConfig = apply { - if (!validated) { - dimensions() - defaultUnitAmount() - matrixValues().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4201,26 +3384,21 @@ constructor( class Builder { - private var dimensions: JsonField> = JsonMissing.of() - private var defaultUnitAmount: JsonField = JsonMissing.of() - private var matrixValues: JsonField> = JsonMissing.of() + private var dimensions: List? = null + private var defaultUnitAmount: String? = null + private var matrixValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensions = matrixConfig.dimensions - this.defaultUnitAmount = matrixConfig.defaultUnitAmount - this.matrixValues = matrixConfig.matrixValues - additionalProperties(matrixConfig.additionalProperties) + dimensions = matrixConfig.dimensions.toMutableList() + defaultUnitAmount = matrixConfig.defaultUnitAmount + matrixValues = matrixConfig.matrixValues.toMutableList() + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ - fun dimensions(dimensions: List) = dimensions(JsonField.of(dimensions)) - - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") - @ExcludeMissing - fun dimensions(dimensions: JsonField>) = apply { + fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } @@ -4228,38 +3406,22 @@ constructor( * Default per unit rate for any usage not bucketed into a specified * matrix_value */ - fun defaultUnitAmount(defaultUnitAmount: String) = - defaultUnitAmount(JsonField.of(defaultUnitAmount)) - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - @JsonProperty("default_unit_amount") - @ExcludeMissing - fun defaultUnitAmount(defaultUnitAmount: JsonField) = apply { + fun defaultUnitAmount(defaultUnitAmount: String) = apply { this.defaultUnitAmount = defaultUnitAmount } /** Matrix values for specified matrix grouping keys */ - fun matrixValues(matrixValues: List) = - matrixValues(JsonField.of(matrixValues)) - - /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") - @ExcludeMissing - fun matrixValues(matrixValues: JsonField>) = apply { + fun matrixValues(matrixValues: List) = apply { this.matrixValues = matrixValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4267,39 +3429,41 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( - dimensions.map { it.toImmutable() }, - defaultUnitAmount, - matrixValues.map { it.toImmutable() }, + checkNotNull(dimensions) { "`dimensions` is required but was not set" } + .toImmutable(), + checkNotNull(defaultUnitAmount) { + "`defaultUnitAmount` is required but was not set" + }, + checkNotNull(matrixValues) { + "`matrixValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonProperty("dimension_values") private val dimensionValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Unit price for the specified dimension_values */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** - * One or two matrix keys to filter usage to this Matrix value by. For example, - * ["region", "tier"] could be used to filter cloud usage by a cloud region and - * an instance tier. - */ - fun dimensionValues(): List = - dimensionValues.getRequired("dimension_values") - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount /** * One or two matrix keys to filter usage to this Matrix value by. For example, @@ -4307,21 +3471,12 @@ constructor( * an instance tier. */ @JsonProperty("dimension_values") - @ExcludeMissing - fun _dimensionValues() = dimensionValues + fun dimensionValues(): List = dimensionValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixValue = apply { - if (!validated) { - unitAmount() - dimensionValues() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4331,66 +3486,61 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() - private var dimensionValues: JsonField> = JsonMissing.of() + private var unitAmount: String? = null + private var dimensionValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues.toMutableList() + additionalProperties = matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ - fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { - this.unitAmount = unitAmount - } - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - fun dimensionValues(dimensionValues: List) = - dimensionValues(JsonField.of(dimensionValues)) + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } /** * One or two matrix keys to filter usage to this Matrix value by. For * example, ["region", "tier"] could be used to filter cloud usage by a * cloud region and an instance tier. */ - @JsonProperty("dimension_values") - @ExcludeMissing - fun dimensionValues(dimensionValues: JsonField>) = apply { + fun dimensionValues(dimensionValues: List) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( - unitAmount, - dimensionValues.map { it.toImmutable() }, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + checkNotNull(dimensionValues) { + "`dimensionValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } @@ -4485,41 +3635,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4529,45 +3664,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4575,10 +3699,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -4663,41 +3797,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4707,45 +3826,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4753,11 +3861,21 @@ constructor( this.additionalProperties.putAll(additionalProperties) } - fun build(): InvoicingCycleConfiguration = - InvoicingCycleConfiguration( - duration, - durationUnit, - additionalProperties.toImmutable(), + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + fun build(): InvoicingCycleConfiguration = + InvoicingCycleConfiguration( + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, + additionalProperties.toImmutable(), ) } @@ -4842,25 +3960,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4874,17 +3985,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4892,6 +4002,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4930,206 +4048,109 @@ constructor( "NewPlanMatrixPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixConfig=$matrixConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanTieredPrice.Builder::class) @NoAutoDetect class NewPlanTieredPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_config") private val tieredConfig: TieredConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredConfig(): TieredConfig = tieredConfig.getRequired("tiered_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("tiered_config") @ExcludeMissing fun _tieredConfig() = tieredConfig + @JsonProperty("tiered_config") fun tieredConfig(): TieredConfig = tieredConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanTieredPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5139,44 +4160,41 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredConfig: TieredConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanTieredPrice: NewPlanTieredPrice) = apply { - this.metadata = newPlanTieredPrice.metadata - this.externalPriceId = newPlanTieredPrice.externalPriceId - this.name = newPlanTieredPrice.name - this.billableMetricId = newPlanTieredPrice.billableMetricId - this.itemId = newPlanTieredPrice.itemId - this.billedInAdvance = newPlanTieredPrice.billedInAdvance - this.fixedPriceQuantity = newPlanTieredPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanTieredPrice.invoiceGroupingKey - this.cadence = newPlanTieredPrice.cadence - this.billingCycleConfiguration = newPlanTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newPlanTieredPrice.invoicingCycleConfiguration - this.conversionRate = newPlanTieredPrice.conversionRate - this.modelType = newPlanTieredPrice.modelType - this.tieredConfig = newPlanTieredPrice.tieredConfig - this.currency = newPlanTieredPrice.currency - additionalProperties(newPlanTieredPrice.additionalProperties) + metadata = newPlanTieredPrice.metadata + externalPriceId = newPlanTieredPrice.externalPriceId + name = newPlanTieredPrice.name + billableMetricId = newPlanTieredPrice.billableMetricId + itemId = newPlanTieredPrice.itemId + billedInAdvance = newPlanTieredPrice.billedInAdvance + fixedPriceQuantity = newPlanTieredPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanTieredPrice.invoiceGroupingKey + cadence = newPlanTieredPrice.cadence + billingCycleConfiguration = newPlanTieredPrice.billingCycleConfiguration + invoicingCycleConfiguration = newPlanTieredPrice.invoicingCycleConfiguration + conversionRate = newPlanTieredPrice.conversionRate + modelType = newPlanTieredPrice.modelType + tieredConfig = newPlanTieredPrice.tieredConfig + currency = newPlanTieredPrice.currency + additionalProperties = newPlanTieredPrice.additionalProperties.toMutableMap() } /** @@ -5184,75 +4202,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -5260,37 +4235,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -5298,16 +4253,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -5316,43 +4261,16 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredConfig(tieredConfig: TieredConfig) = - tieredConfig(JsonField.of(tieredConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_config") - @ExcludeMissing - fun tieredConfig(tieredConfig: JsonField) = apply { + fun tieredConfig(tieredConfig: TieredConfig) = apply { this.tieredConfig = tieredConfig } @@ -5360,24 +4278,15 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5385,22 +4294,30 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanTieredPrice = NewPlanTieredPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredConfig) { "`tieredConfig` is required but was not set" }, currency, additionalProperties.toImmutable(), ) @@ -5538,33 +4455,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredConfig.Builder::class) @NoAutoDetect class TieredConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(): List = tiers.getRequired("tiers") - - /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5574,31 +4480,25 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredConfig: TieredConfig) = apply { - this.tiers = tieredConfig.tiers - additionalProperties(tieredConfig.additionalProperties) + tiers = tieredConfig.tiers.toMutableList() + additionalProperties = tieredConfig.additionalProperties.toMutableMap() } /** Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5606,57 +4506,47 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredConfig = TieredConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") private val firstUnit: Double, + @JsonProperty("last_unit") private val lastUnit: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Inclusive tier starting value */ - fun firstUnit(): Double = firstUnit.getRequired("first_unit") - - /** Exclusive tier ending value. If null, this is treated as the last tier */ - fun lastUnit(): Optional = - Optional.ofNullable(lastUnit.getNullable("last_unit")) - - /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Inclusive tier starting value */ - @JsonProperty("first_unit") @ExcludeMissing fun _firstUnit() = firstUnit + @JsonProperty("first_unit") fun firstUnit(): Double = firstUnit /** Exclusive tier ending value. If null, this is treated as the last tier */ - @JsonProperty("last_unit") @ExcludeMissing fun _lastUnit() = lastUnit + @JsonProperty("last_unit") + fun lastUnit(): Optional = Optional.ofNullable(lastUnit) /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - firstUnit() - lastUnit() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5666,74 +4556,62 @@ constructor( class Builder { - private var firstUnit: JsonField = JsonMissing.of() - private var lastUnit: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var firstUnit: Double? = null + private var lastUnit: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.firstUnit = tier.firstUnit - this.lastUnit = tier.lastUnit - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + firstUnit = tier.firstUnit + lastUnit = tier.lastUnit + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) - - /** Inclusive tier starting value */ - @JsonProperty("first_unit") - @ExcludeMissing - fun firstUnit(firstUnit: JsonField) = apply { - this.firstUnit = firstUnit - } - - /** - * Exclusive tier ending value. If null, this is treated as the last tier - */ - fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) + fun firstUnit(firstUnit: Double) = apply { this.firstUnit = firstUnit } /** * Exclusive tier ending value. If null, this is treated as the last tier */ - @JsonProperty("last_unit") - @ExcludeMissing - fun lastUnit(lastUnit: JsonField) = apply { - this.lastUnit = lastUnit - } - - /** Amount per unit */ - fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) + fun lastUnit(lastUnit: Double) = apply { this.lastUnit = lastUnit } /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { - this.unitAmount = unitAmount - } + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - firstUnit, + checkNotNull(firstUnit) { + "`firstUnit` is required but was not set" + }, lastUnit, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -5777,41 +4655,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5821,45 +4684,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5867,10 +4719,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -5955,41 +4817,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5999,45 +4846,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6045,10 +4881,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -6134,25 +4980,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6166,17 +5005,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6184,6 +5022,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -6222,209 +5068,110 @@ constructor( "NewPlanTieredPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredConfig=$tieredConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanTieredBpsPrice.Builder::class) @NoAutoDetect class NewPlanTieredBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredBpsConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_bps_config") private val tieredBpsConfig: TieredBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredBpsConfig(): TieredBpsConfig = - tieredBpsConfig.getRequired("tiered_bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun _tieredBpsConfig() = tieredBpsConfig + fun tieredBpsConfig(): TieredBpsConfig = tieredBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanTieredBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredBpsConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6434,44 +5181,41 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredBpsConfig: TieredBpsConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanTieredBpsPrice: NewPlanTieredBpsPrice) = apply { - this.metadata = newPlanTieredBpsPrice.metadata - this.externalPriceId = newPlanTieredBpsPrice.externalPriceId - this.name = newPlanTieredBpsPrice.name - this.billableMetricId = newPlanTieredBpsPrice.billableMetricId - this.itemId = newPlanTieredBpsPrice.itemId - this.billedInAdvance = newPlanTieredBpsPrice.billedInAdvance - this.fixedPriceQuantity = newPlanTieredBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanTieredBpsPrice.invoiceGroupingKey - this.cadence = newPlanTieredBpsPrice.cadence - this.billingCycleConfiguration = newPlanTieredBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newPlanTieredBpsPrice.invoicingCycleConfiguration - this.conversionRate = newPlanTieredBpsPrice.conversionRate - this.modelType = newPlanTieredBpsPrice.modelType - this.tieredBpsConfig = newPlanTieredBpsPrice.tieredBpsConfig - this.currency = newPlanTieredBpsPrice.currency - additionalProperties(newPlanTieredBpsPrice.additionalProperties) + metadata = newPlanTieredBpsPrice.metadata + externalPriceId = newPlanTieredBpsPrice.externalPriceId + name = newPlanTieredBpsPrice.name + billableMetricId = newPlanTieredBpsPrice.billableMetricId + itemId = newPlanTieredBpsPrice.itemId + billedInAdvance = newPlanTieredBpsPrice.billedInAdvance + fixedPriceQuantity = newPlanTieredBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanTieredBpsPrice.invoiceGroupingKey + cadence = newPlanTieredBpsPrice.cadence + billingCycleConfiguration = newPlanTieredBpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = newPlanTieredBpsPrice.invoicingCycleConfiguration + conversionRate = newPlanTieredBpsPrice.conversionRate + modelType = newPlanTieredBpsPrice.modelType + tieredBpsConfig = newPlanTieredBpsPrice.tieredBpsConfig + currency = newPlanTieredBpsPrice.currency + additionalProperties = newPlanTieredBpsPrice.additionalProperties.toMutableMap() } /** @@ -6479,75 +5223,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -6555,37 +5256,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -6593,16 +5274,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -6611,43 +5282,16 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = - tieredBpsConfig(JsonField.of(tieredBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun tieredBpsConfig(tieredBpsConfig: JsonField) = apply { + fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = apply { this.tieredBpsConfig = tieredBpsConfig } @@ -6655,24 +5299,15 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6680,22 +5315,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanTieredBpsPrice = NewPlanTieredBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredBpsConfig) { + "`tieredBpsConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -6833,39 +5478,25 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredBpsConfig.Builder::class) @NoAutoDetect class TieredBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into specified - * tiers - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into specified * tiers */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6875,37 +5506,28 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredBpsConfig: TieredBpsConfig) = apply { - this.tiers = tieredBpsConfig.tiers - additionalProperties(tieredBpsConfig.additionalProperties) + tiers = tieredBpsConfig.tiers.toMutableList() + additionalProperties = tieredBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6913,72 +5535,52 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredBpsConfig = TieredBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Inclusive tier starting value */ - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** Exclusive tier ending value */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Per-event basis point rate */ - fun bps(): Double = bps.getRequired("bps") - - /** Per unit maximum to charge */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** Exclusive tier ending value */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Per-event basis point rate */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Per unit maximum to charge */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - minimumAmount() - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6988,83 +5590,69 @@ constructor( class Builder { - private var minimumAmount: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var minimumAmount: String? = null + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.minimumAmount = tier.minimumAmount - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + minimumAmount = tier.minimumAmount + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** Exclusive tier ending value */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Exclusive tier ending value */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Per-event basis point rate */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Per-event basis point rate */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** Per unit maximum to charge */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** Per unit maximum to charge */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - minimumAmount, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -7109,41 +5697,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7153,45 +5726,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7199,10 +5761,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -7287,41 +5859,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7331,45 +5888,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7377,10 +5923,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -7466,25 +6022,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7498,17 +6047,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7516,6 +6064,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -7554,206 +6110,109 @@ constructor( "NewPlanTieredBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredBpsConfig=$tieredBpsConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanBpsPrice.Builder::class) @NoAutoDetect class NewPlanBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bpsConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bps_config") private val bpsConfig: BpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bpsConfig(): BpsConfig = bpsConfig.getRequired("bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bps_config") @ExcludeMissing fun _bpsConfig() = bpsConfig + @JsonProperty("bps_config") fun bpsConfig(): BpsConfig = bpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bpsConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7763,43 +6222,41 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bpsConfig: BpsConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanBpsPrice: NewPlanBpsPrice) = apply { - this.metadata = newPlanBpsPrice.metadata - this.externalPriceId = newPlanBpsPrice.externalPriceId - this.name = newPlanBpsPrice.name - this.billableMetricId = newPlanBpsPrice.billableMetricId - this.itemId = newPlanBpsPrice.itemId - this.billedInAdvance = newPlanBpsPrice.billedInAdvance - this.fixedPriceQuantity = newPlanBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanBpsPrice.invoiceGroupingKey - this.cadence = newPlanBpsPrice.cadence - this.billingCycleConfiguration = newPlanBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = newPlanBpsPrice.invoicingCycleConfiguration - this.conversionRate = newPlanBpsPrice.conversionRate - this.modelType = newPlanBpsPrice.modelType - this.bpsConfig = newPlanBpsPrice.bpsConfig - this.currency = newPlanBpsPrice.currency - additionalProperties(newPlanBpsPrice.additionalProperties) + metadata = newPlanBpsPrice.metadata + externalPriceId = newPlanBpsPrice.externalPriceId + name = newPlanBpsPrice.name + billableMetricId = newPlanBpsPrice.billableMetricId + itemId = newPlanBpsPrice.itemId + billedInAdvance = newPlanBpsPrice.billedInAdvance + fixedPriceQuantity = newPlanBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanBpsPrice.invoiceGroupingKey + cadence = newPlanBpsPrice.cadence + billingCycleConfiguration = newPlanBpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = newPlanBpsPrice.invoicingCycleConfiguration + conversionRate = newPlanBpsPrice.conversionRate + modelType = newPlanBpsPrice.modelType + bpsConfig = newPlanBpsPrice.bpsConfig + currency = newPlanBpsPrice.currency + additionalProperties = newPlanBpsPrice.additionalProperties.toMutableMap() } /** @@ -7807,75 +6264,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -7883,37 +6297,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -7921,16 +6315,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -7939,67 +6323,30 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bpsConfig(bpsConfig: BpsConfig) = bpsConfig(JsonField.of(bpsConfig)) - - @JsonProperty("bps_config") - @ExcludeMissing - fun bpsConfig(bpsConfig: JsonField) = apply { - this.bpsConfig = bpsConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun bpsConfig(bpsConfig: BpsConfig) = apply { this.bpsConfig = bpsConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8007,65 +6354,56 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanBpsPrice = NewPlanBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bpsConfig) { "`bpsConfig` is required but was not set" }, currency, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BpsConfig.Builder::class) @NoAutoDetect class BpsConfig + @JsonCreator private constructor( - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Basis point take rate per event */ - fun bps(): Double = bps.getRequired("bps") - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Basis point take rate per event */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Optional currency amount maximum to cap spend per event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BpsConfig = apply { - if (!validated) { - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8075,44 +6413,32 @@ constructor( class Builder { - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bpsConfig: BpsConfig) = apply { - this.bps = bpsConfig.bps - this.perUnitMaximum = bpsConfig.perUnitMaximum - additionalProperties(bpsConfig.additionalProperties) + bps = bpsConfig.bps + perUnitMaximum = bpsConfig.perUnitMaximum + additionalProperties = bpsConfig.additionalProperties.toMutableMap() } /** Basis point take rate per event */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis point take rate per event */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** Optional currency amount maximum to cap spend per event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8120,9 +6446,17 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BpsConfig = BpsConfig( - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -8281,41 +6615,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8325,45 +6644,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8371,10 +6679,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -8459,41 +6777,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8503,45 +6806,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8549,10 +6841,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -8638,25 +6940,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8670,17 +6965,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8688,6 +6982,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -8726,253 +7028,153 @@ constructor( "NewPlanBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bpsConfig=$bpsConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanBulkBpsPrice.Builder::class) @NoAutoDetect class NewPlanBulkBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkBpsConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_bps_config") private val bulkBpsConfig: BulkBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - fun name(): String = name.getRequired("name") + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ + @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ + @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - fun modelType(): ModelType = modelType.getRequired("model_type") + @JsonProperty("model_type") fun modelType(): ModelType = modelType - fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig.getRequired("bulk_bps_config") + @JsonProperty("bulk_bps_config") fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) - /** An alias for the price. */ - @JsonProperty("external_price_id") + @JsonAnyGetter @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun _additionalProperties(): Map = additionalProperties - /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + fun toBuilder() = Builder().from(this) - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate - - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType - - @JsonProperty("bulk_bps_config") @ExcludeMissing fun _bulkBpsConfig() = bulkBpsConfig - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency - - @JsonAnyGetter - @ExcludeMissing - fun _additionalProperties(): Map = additionalProperties - - fun validate(): NewPlanBulkBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkBpsConfig().validate() - currency() - validated = true - } - } - - fun toBuilder() = Builder().from(this) - - companion object { + companion object { @JvmStatic fun builder() = Builder() } class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkBpsConfig: BulkBpsConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanBulkBpsPrice: NewPlanBulkBpsPrice) = apply { - this.metadata = newPlanBulkBpsPrice.metadata - this.externalPriceId = newPlanBulkBpsPrice.externalPriceId - this.name = newPlanBulkBpsPrice.name - this.billableMetricId = newPlanBulkBpsPrice.billableMetricId - this.itemId = newPlanBulkBpsPrice.itemId - this.billedInAdvance = newPlanBulkBpsPrice.billedInAdvance - this.fixedPriceQuantity = newPlanBulkBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanBulkBpsPrice.invoiceGroupingKey - this.cadence = newPlanBulkBpsPrice.cadence - this.billingCycleConfiguration = newPlanBulkBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newPlanBulkBpsPrice.invoicingCycleConfiguration - this.conversionRate = newPlanBulkBpsPrice.conversionRate - this.modelType = newPlanBulkBpsPrice.modelType - this.bulkBpsConfig = newPlanBulkBpsPrice.bulkBpsConfig - this.currency = newPlanBulkBpsPrice.currency - additionalProperties(newPlanBulkBpsPrice.additionalProperties) + metadata = newPlanBulkBpsPrice.metadata + externalPriceId = newPlanBulkBpsPrice.externalPriceId + name = newPlanBulkBpsPrice.name + billableMetricId = newPlanBulkBpsPrice.billableMetricId + itemId = newPlanBulkBpsPrice.itemId + billedInAdvance = newPlanBulkBpsPrice.billedInAdvance + fixedPriceQuantity = newPlanBulkBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanBulkBpsPrice.invoiceGroupingKey + cadence = newPlanBulkBpsPrice.cadence + billingCycleConfiguration = newPlanBulkBpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = newPlanBulkBpsPrice.invoicingCycleConfiguration + conversionRate = newPlanBulkBpsPrice.conversionRate + modelType = newPlanBulkBpsPrice.modelType + bulkBpsConfig = newPlanBulkBpsPrice.bulkBpsConfig + currency = newPlanBulkBpsPrice.currency + additionalProperties = newPlanBulkBpsPrice.additionalProperties.toMutableMap() } /** @@ -8980,75 +7182,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -9056,37 +7215,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -9094,16 +7233,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -9112,43 +7241,16 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = - bulkBpsConfig(JsonField.of(bulkBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun bulkBpsConfig(bulkBpsConfig: JsonField) = apply { + fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = apply { this.bulkBpsConfig = bulkBpsConfig } @@ -9156,24 +7258,15 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9181,60 +7274,56 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanBulkBpsPrice = NewPlanBulkBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkBpsConfig) { + "`bulkBpsConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkBpsConfig.Builder::class) @NoAutoDetect class BulkBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a single tier - * based on total volume - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single tier * based on total volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9244,37 +7333,28 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkBpsConfig: BulkBpsConfig) = apply { - this.tiers = bulkBpsConfig.tiers - additionalProperties(bulkBpsConfig.additionalProperties) + tiers = bulkBpsConfig.tiers.toMutableList() + additionalProperties = bulkBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single * tier based on total volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a single - * tier based on total volume - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9282,62 +7362,48 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkBpsConfig = BulkBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for tier */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Basis points to rate on */ - fun bps(): Double = bps.getRequired("bps") - - /** The maximum amount to charge for any one event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Upper bound for tier */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Basis points to rate on */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** The maximum amount to charge for any one event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9347,69 +7413,59 @@ constructor( class Builder { - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for tier */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Upper bound for tier */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Basis points to rate on */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis points to rate on */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** The maximum amount to charge for any one event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) - - /** The maximum amount to charge for any one event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -9586,41 +7642,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9630,45 +7671,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9676,10 +7706,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -9764,41 +7804,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9808,45 +7833,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9854,10 +7868,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -9943,25 +7967,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9975,17 +7992,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9993,6 +8009,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -10031,205 +8055,108 @@ constructor( "NewPlanBulkBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkBpsConfig=$bulkBpsConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanBulkPrice.Builder::class) @NoAutoDetect class NewPlanBulkPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_config") private val bulkConfig: BulkConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - fun name(): String = name.getRequired("name") + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ + @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ + @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - fun modelType(): ModelType = modelType.getRequired("model_type") + @JsonProperty("model_type") fun modelType(): ModelType = modelType - fun bulkConfig(): BulkConfig = bulkConfig.getRequired("bulk_config") + @JsonProperty("bulk_config") fun bulkConfig(): BulkConfig = bulkConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) - /** An alias for the price. */ - @JsonProperty("external_price_id") + @JsonAnyGetter @ExcludeMissing - fun _externalPriceId() = externalPriceId - - /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate - - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType - - @JsonProperty("bulk_config") @ExcludeMissing fun _bulkConfig() = bulkConfig - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency - - @JsonAnyGetter - @ExcludeMissing - fun _additionalProperties(): Map = additionalProperties - - fun validate(): NewPlanBulkPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkConfig().validate() - currency() - validated = true - } - } + fun _additionalProperties(): Map = additionalProperties fun toBuilder() = Builder().from(this) @@ -10240,43 +8167,41 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkConfig: BulkConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanBulkPrice: NewPlanBulkPrice) = apply { - this.metadata = newPlanBulkPrice.metadata - this.externalPriceId = newPlanBulkPrice.externalPriceId - this.name = newPlanBulkPrice.name - this.billableMetricId = newPlanBulkPrice.billableMetricId - this.itemId = newPlanBulkPrice.itemId - this.billedInAdvance = newPlanBulkPrice.billedInAdvance - this.fixedPriceQuantity = newPlanBulkPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanBulkPrice.invoiceGroupingKey - this.cadence = newPlanBulkPrice.cadence - this.billingCycleConfiguration = newPlanBulkPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = newPlanBulkPrice.invoicingCycleConfiguration - this.conversionRate = newPlanBulkPrice.conversionRate - this.modelType = newPlanBulkPrice.modelType - this.bulkConfig = newPlanBulkPrice.bulkConfig - this.currency = newPlanBulkPrice.currency - additionalProperties(newPlanBulkPrice.additionalProperties) + metadata = newPlanBulkPrice.metadata + externalPriceId = newPlanBulkPrice.externalPriceId + name = newPlanBulkPrice.name + billableMetricId = newPlanBulkPrice.billableMetricId + itemId = newPlanBulkPrice.itemId + billedInAdvance = newPlanBulkPrice.billedInAdvance + fixedPriceQuantity = newPlanBulkPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanBulkPrice.invoiceGroupingKey + cadence = newPlanBulkPrice.cadence + billingCycleConfiguration = newPlanBulkPrice.billingCycleConfiguration + invoicingCycleConfiguration = newPlanBulkPrice.invoicingCycleConfiguration + conversionRate = newPlanBulkPrice.conversionRate + modelType = newPlanBulkPrice.modelType + bulkConfig = newPlanBulkPrice.bulkConfig + currency = newPlanBulkPrice.currency + additionalProperties = newPlanBulkPrice.additionalProperties.toMutableMap() } /** @@ -10284,75 +8209,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -10360,37 +8242,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -10398,16 +8260,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -10416,67 +8268,30 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkConfig(bulkConfig: BulkConfig) = bulkConfig(JsonField.of(bulkConfig)) - - @JsonProperty("bulk_config") - @ExcludeMissing - fun bulkConfig(bulkConfig: JsonField) = apply { - this.bulkConfig = bulkConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun bulkConfig(bulkConfig: BulkConfig) = apply { this.bulkConfig = bulkConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10484,54 +8299,51 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanBulkPrice = NewPlanBulkPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkConfig) { "`bulkConfig` is required but was not set" }, currency, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkConfig.Builder::class) @NoAutoDetect class BulkConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Bulk tiers for rating based on total usage volume */ - fun tiers(): List = tiers.getRequired("tiers") - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10541,31 +8353,25 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkConfig: BulkConfig) = apply { - this.tiers = bulkConfig.tiers - additionalProperties(bulkConfig.additionalProperties) + tiers = bulkConfig.tiers.toMutableList() + additionalProperties = bulkConfig.additionalProperties.toMutableMap() } /** Bulk tiers for rating based on total usage volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10573,51 +8379,43 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkConfig = BulkConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumUnits: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_units") private val maximumUnits: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for this tier */ - fun maximumUnits(): Optional = - Optional.ofNullable(maximumUnits.getNullable("maximum_units")) - - /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Upper bound for this tier */ @JsonProperty("maximum_units") - @ExcludeMissing - fun _maximumUnits() = maximumUnits + fun maximumUnits(): Optional = Optional.ofNullable(maximumUnits) /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumUnits() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10627,58 +8425,54 @@ constructor( class Builder { - private var maximumUnits: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var maximumUnits: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumUnits = tier.maximumUnits - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + maximumUnits = tier.maximumUnits + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for this tier */ - fun maximumUnits(maximumUnits: Double) = - maximumUnits(JsonField.of(maximumUnits)) - - /** Upper bound for this tier */ - @JsonProperty("maximum_units") - @ExcludeMissing - fun maximumUnits(maximumUnits: JsonField) = apply { + fun maximumUnits(maximumUnits: Double) = apply { this.maximumUnits = maximumUnits } /** Amount per unit */ - fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - - /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { - this.unitAmount = unitAmount - } + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumUnits, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -10854,41 +8648,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10898,45 +8677,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10944,10 +8712,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -11032,41 +8810,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11076,45 +8839,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11122,10 +8874,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -11211,25 +8973,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11243,17 +8998,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11261,6 +9015,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -11299,210 +9061,113 @@ constructor( "NewPlanBulkPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkConfig=$bulkConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanThresholdTotalAmountPrice.Builder::class) @NoAutoDetect class NewPlanThresholdTotalAmountPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val thresholdTotalAmountConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("threshold_total_amount_config") + private val thresholdTotalAmountConfig: ThresholdTotalAmountConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - fun name(): String = name.getRequired("name") + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ + @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ + @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - fun modelType(): ModelType = modelType.getRequired("model_type") + @JsonProperty("model_type") fun modelType(): ModelType = modelType + @JsonProperty("threshold_total_amount_config") fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = - thresholdTotalAmountConfig.getRequired("threshold_total_amount_config") + thresholdTotalAmountConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) - /** An alias for the price. */ - @JsonProperty("external_price_id") + @JsonAnyGetter @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun _additionalProperties(): Map = additionalProperties - /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate - - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType - - @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun _thresholdTotalAmountConfig() = thresholdTotalAmountConfig - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency - - @JsonAnyGetter - @ExcludeMissing - fun _additionalProperties(): Map = additionalProperties - - fun validate(): NewPlanThresholdTotalAmountPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - thresholdTotalAmountConfig().validate() - currency() - validated = true - } - } - - fun toBuilder() = Builder().from(this) + fun toBuilder() = Builder().from(this) companion object { @@ -11511,49 +9176,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var thresholdTotalAmountConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var thresholdTotalAmountConfig: ThresholdTotalAmountConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newPlanThresholdTotalAmountPrice: NewPlanThresholdTotalAmountPrice ) = apply { - this.metadata = newPlanThresholdTotalAmountPrice.metadata - this.externalPriceId = newPlanThresholdTotalAmountPrice.externalPriceId - this.name = newPlanThresholdTotalAmountPrice.name - this.billableMetricId = newPlanThresholdTotalAmountPrice.billableMetricId - this.itemId = newPlanThresholdTotalAmountPrice.itemId - this.billedInAdvance = newPlanThresholdTotalAmountPrice.billedInAdvance - this.fixedPriceQuantity = newPlanThresholdTotalAmountPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanThresholdTotalAmountPrice.invoiceGroupingKey - this.cadence = newPlanThresholdTotalAmountPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanThresholdTotalAmountPrice.metadata + externalPriceId = newPlanThresholdTotalAmountPrice.externalPriceId + name = newPlanThresholdTotalAmountPrice.name + billableMetricId = newPlanThresholdTotalAmountPrice.billableMetricId + itemId = newPlanThresholdTotalAmountPrice.itemId + billedInAdvance = newPlanThresholdTotalAmountPrice.billedInAdvance + fixedPriceQuantity = newPlanThresholdTotalAmountPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanThresholdTotalAmountPrice.invoiceGroupingKey + cadence = newPlanThresholdTotalAmountPrice.cadence + billingCycleConfiguration = newPlanThresholdTotalAmountPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanThresholdTotalAmountPrice.invoicingCycleConfiguration - this.conversionRate = newPlanThresholdTotalAmountPrice.conversionRate - this.modelType = newPlanThresholdTotalAmountPrice.modelType - this.thresholdTotalAmountConfig = + conversionRate = newPlanThresholdTotalAmountPrice.conversionRate + modelType = newPlanThresholdTotalAmountPrice.modelType + thresholdTotalAmountConfig = newPlanThresholdTotalAmountPrice.thresholdTotalAmountConfig - this.currency = newPlanThresholdTotalAmountPrice.currency - additionalProperties(newPlanThresholdTotalAmountPrice.additionalProperties) + currency = newPlanThresholdTotalAmountPrice.currency + additionalProperties = + newPlanThresholdTotalAmountPrice.additionalProperties.toMutableMap() } /** @@ -11561,75 +9224,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -11637,37 +9257,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -11675,16 +9275,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -11693,69 +9283,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun thresholdTotalAmountConfig( thresholdTotalAmountConfig: ThresholdTotalAmountConfig - ) = thresholdTotalAmountConfig(JsonField.of(thresholdTotalAmountConfig)) - - @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun thresholdTotalAmountConfig( - thresholdTotalAmountConfig: JsonField ) = apply { this.thresholdTotalAmountConfig = thresholdTotalAmountConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11763,22 +9316,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanThresholdTotalAmountPrice = NewPlanThresholdTotalAmountPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - thresholdTotalAmountConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(thresholdTotalAmountConfig) { + "`thresholdTotalAmountConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -11916,25 +9479,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ThresholdTotalAmountConfig.Builder::class) @NoAutoDetect class ThresholdTotalAmountConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): ThresholdTotalAmountConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11949,17 +9505,17 @@ constructor( @JvmSynthetic internal fun from(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = apply { - additionalProperties(thresholdTotalAmountConfig.additionalProperties) + additionalProperties = + thresholdTotalAmountConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11967,6 +9523,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ThresholdTotalAmountConfig = ThresholdTotalAmountConfig(additionalProperties.toImmutable()) } @@ -11992,41 +9556,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12036,45 +9585,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12082,10 +9620,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -12170,41 +9718,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12214,45 +9747,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12260,10 +9782,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -12349,25 +9881,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12381,17 +9906,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12399,6 +9923,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -12437,257 +9969,157 @@ constructor( "NewPlanThresholdTotalAmountPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, thresholdTotalAmountConfig=$thresholdTotalAmountConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanTieredPackagePrice.Builder::class) @NoAutoDetect class NewPlanTieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredPackageConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_package_config") + private val tieredPackageConfig: TieredPackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - fun name(): String = name.getRequired("name") + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ + @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ + @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - fun modelType(): ModelType = modelType.getRequired("model_type") + @JsonProperty("model_type") fun modelType(): ModelType = modelType - fun tieredPackageConfig(): TieredPackageConfig = - tieredPackageConfig.getRequired("tiered_package_config") + @JsonProperty("tiered_package_config") + fun tieredPackageConfig(): TieredPackageConfig = tieredPackageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId - - /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - @JsonProperty("billable_metric_id") + @JsonAnyGetter @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun _additionalProperties(): Map = additionalProperties - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + fun toBuilder() = Builder().from(this) - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + companion object { - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + @JvmStatic fun builder() = Builder() + } - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + class Builder { - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate - - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType - - @JsonProperty("tiered_package_config") - @ExcludeMissing - fun _tieredPackageConfig() = tieredPackageConfig - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency - - @JsonAnyGetter - @ExcludeMissing - fun _additionalProperties(): Map = additionalProperties - - fun validate(): NewPlanTieredPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredPackageConfig().validate() - currency() - validated = true - } - } - - fun toBuilder() = Builder().from(this) - - companion object { - - @JvmStatic fun builder() = Builder() - } - - class Builder { - - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredPackageConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var additionalProperties: MutableMap = mutableMapOf() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredPackageConfig: TieredPackageConfig? = null + private var currency: String? = null + private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanTieredPackagePrice: NewPlanTieredPackagePrice) = apply { - this.metadata = newPlanTieredPackagePrice.metadata - this.externalPriceId = newPlanTieredPackagePrice.externalPriceId - this.name = newPlanTieredPackagePrice.name - this.billableMetricId = newPlanTieredPackagePrice.billableMetricId - this.itemId = newPlanTieredPackagePrice.itemId - this.billedInAdvance = newPlanTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = newPlanTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanTieredPackagePrice.invoiceGroupingKey - this.cadence = newPlanTieredPackagePrice.cadence - this.billingCycleConfiguration = - newPlanTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + metadata = newPlanTieredPackagePrice.metadata + externalPriceId = newPlanTieredPackagePrice.externalPriceId + name = newPlanTieredPackagePrice.name + billableMetricId = newPlanTieredPackagePrice.billableMetricId + itemId = newPlanTieredPackagePrice.itemId + billedInAdvance = newPlanTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newPlanTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newPlanTieredPackagePrice.invoiceGroupingKey + cadence = newPlanTieredPackagePrice.cadence + billingCycleConfiguration = newPlanTieredPackagePrice.billingCycleConfiguration + invoicingCycleConfiguration = newPlanTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newPlanTieredPackagePrice.conversionRate - this.modelType = newPlanTieredPackagePrice.modelType - this.tieredPackageConfig = newPlanTieredPackagePrice.tieredPackageConfig - this.currency = newPlanTieredPackagePrice.currency - additionalProperties(newPlanTieredPackagePrice.additionalProperties) + conversionRate = newPlanTieredPackagePrice.conversionRate + modelType = newPlanTieredPackagePrice.modelType + tieredPackageConfig = newPlanTieredPackagePrice.tieredPackageConfig + currency = newPlanTieredPackagePrice.currency + additionalProperties = + newPlanTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -12695,75 +10127,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -12771,37 +10160,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -12809,16 +10178,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -12827,69 +10186,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType + fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = apply { + this.tieredPackageConfig = tieredPackageConfig } - fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = - tieredPackageConfig(JsonField.of(tieredPackageConfig)) - - @JsonProperty("tiered_package_config") - @ExcludeMissing - fun tieredPackageConfig(tieredPackageConfig: JsonField) = - apply { - this.tieredPackageConfig = tieredPackageConfig - } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) - /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12897,22 +10219,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanTieredPackagePrice = NewPlanTieredPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredPackageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredPackageConfig) { + "`tieredPackageConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -13050,25 +10382,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageConfig.Builder::class) @NoAutoDetect class TieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredPackageConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13082,17 +10407,17 @@ constructor( @JvmSynthetic internal fun from(tieredPackageConfig: TieredPackageConfig) = apply { - additionalProperties(tieredPackageConfig.additionalProperties) + additionalProperties = + tieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13100,6 +10425,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageConfig = TieredPackageConfig(additionalProperties.toImmutable()) } @@ -13125,41 +10458,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13169,45 +10487,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13215,10 +10522,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -13303,41 +10620,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13347,45 +10649,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13393,10 +10684,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -13482,25 +10783,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13514,17 +10808,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13532,6 +10825,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -13570,209 +10871,111 @@ constructor( "NewPlanTieredPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredPackageConfig=$tieredPackageConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanTieredWithMinimumPrice.Builder::class) @NoAutoDetect class NewPlanTieredWithMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithMinimumConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_minimum_config") + private val tieredWithMinimumConfig: TieredWithMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithMinimumConfig(): TieredWithMinimumConfig = - tieredWithMinimumConfig.getRequired("tiered_with_minimum_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun _tieredWithMinimumConfig() = tieredWithMinimumConfig + fun tieredWithMinimumConfig(): TieredWithMinimumConfig = tieredWithMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanTieredWithMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithMinimumConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13782,48 +10985,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithMinimumConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithMinimumConfig: TieredWithMinimumConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanTieredWithMinimumPrice: NewPlanTieredWithMinimumPrice) = apply { - this.metadata = newPlanTieredWithMinimumPrice.metadata - this.externalPriceId = newPlanTieredWithMinimumPrice.externalPriceId - this.name = newPlanTieredWithMinimumPrice.name - this.billableMetricId = newPlanTieredWithMinimumPrice.billableMetricId - this.itemId = newPlanTieredWithMinimumPrice.itemId - this.billedInAdvance = newPlanTieredWithMinimumPrice.billedInAdvance - this.fixedPriceQuantity = newPlanTieredWithMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanTieredWithMinimumPrice.invoiceGroupingKey - this.cadence = newPlanTieredWithMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanTieredWithMinimumPrice.metadata + externalPriceId = newPlanTieredWithMinimumPrice.externalPriceId + name = newPlanTieredWithMinimumPrice.name + billableMetricId = newPlanTieredWithMinimumPrice.billableMetricId + itemId = newPlanTieredWithMinimumPrice.itemId + billedInAdvance = newPlanTieredWithMinimumPrice.billedInAdvance + fixedPriceQuantity = newPlanTieredWithMinimumPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanTieredWithMinimumPrice.invoiceGroupingKey + cadence = newPlanTieredWithMinimumPrice.cadence + billingCycleConfiguration = newPlanTieredWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanTieredWithMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newPlanTieredWithMinimumPrice.conversionRate - this.modelType = newPlanTieredWithMinimumPrice.modelType - this.tieredWithMinimumConfig = + conversionRate = newPlanTieredWithMinimumPrice.conversionRate + modelType = newPlanTieredWithMinimumPrice.modelType + tieredWithMinimumConfig = newPlanTieredWithMinimumPrice.tieredWithMinimumConfig - this.currency = newPlanTieredWithMinimumPrice.currency - additionalProperties(newPlanTieredWithMinimumPrice.additionalProperties) + currency = newPlanTieredWithMinimumPrice.currency + additionalProperties = + newPlanTieredWithMinimumPrice.additionalProperties.toMutableMap() } /** @@ -13831,75 +11032,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -13907,37 +11065,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -13945,16 +11083,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -13963,68 +11091,33 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithMinimumConfig(tieredWithMinimumConfig: TieredWithMinimumConfig) = - tieredWithMinimumConfig(JsonField.of(tieredWithMinimumConfig)) - - @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun tieredWithMinimumConfig( - tieredWithMinimumConfig: JsonField - ) = apply { this.tieredWithMinimumConfig = tieredWithMinimumConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.tieredWithMinimumConfig = tieredWithMinimumConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14032,22 +11125,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanTieredWithMinimumPrice = NewPlanTieredWithMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithMinimumConfig) { + "`tieredWithMinimumConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -14185,25 +11288,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithMinimumConfig.Builder::class) @NoAutoDetect class TieredWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14217,17 +11313,17 @@ constructor( @JvmSynthetic internal fun from(tieredWithMinimumConfig: TieredWithMinimumConfig) = apply { - additionalProperties(tieredWithMinimumConfig.additionalProperties) + additionalProperties = + tieredWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14235,6 +11331,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithMinimumConfig = TieredWithMinimumConfig(additionalProperties.toImmutable()) } @@ -14260,41 +11364,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14304,45 +11393,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14350,10 +11428,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14438,41 +11526,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14482,45 +11555,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14528,10 +11590,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14617,25 +11689,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14649,17 +11714,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14667,6 +11731,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -14705,209 +11777,111 @@ constructor( "NewPlanTieredWithMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithMinimumConfig=$tieredWithMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanUnitWithPercentPrice.Builder::class) @NoAutoDetect class NewPlanUnitWithPercentPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithPercentConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_percent_config") + private val unitWithPercentConfig: UnitWithPercentConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithPercentConfig(): UnitWithPercentConfig = - unitWithPercentConfig.getRequired("unit_with_percent_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun _unitWithPercentConfig() = unitWithPercentConfig + fun unitWithPercentConfig(): UnitWithPercentConfig = unitWithPercentConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanUnitWithPercentPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithPercentConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14917,48 +11891,45 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithPercentConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithPercentConfig: UnitWithPercentConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanUnitWithPercentPrice: NewPlanUnitWithPercentPrice) = apply { - this.metadata = newPlanUnitWithPercentPrice.metadata - this.externalPriceId = newPlanUnitWithPercentPrice.externalPriceId - this.name = newPlanUnitWithPercentPrice.name - this.billableMetricId = newPlanUnitWithPercentPrice.billableMetricId - this.itemId = newPlanUnitWithPercentPrice.itemId - this.billedInAdvance = newPlanUnitWithPercentPrice.billedInAdvance - this.fixedPriceQuantity = newPlanUnitWithPercentPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanUnitWithPercentPrice.invoiceGroupingKey - this.cadence = newPlanUnitWithPercentPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanUnitWithPercentPrice.metadata + externalPriceId = newPlanUnitWithPercentPrice.externalPriceId + name = newPlanUnitWithPercentPrice.name + billableMetricId = newPlanUnitWithPercentPrice.billableMetricId + itemId = newPlanUnitWithPercentPrice.itemId + billedInAdvance = newPlanUnitWithPercentPrice.billedInAdvance + fixedPriceQuantity = newPlanUnitWithPercentPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanUnitWithPercentPrice.invoiceGroupingKey + cadence = newPlanUnitWithPercentPrice.cadence + billingCycleConfiguration = newPlanUnitWithPercentPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanUnitWithPercentPrice.invoicingCycleConfiguration - this.conversionRate = newPlanUnitWithPercentPrice.conversionRate - this.modelType = newPlanUnitWithPercentPrice.modelType - this.unitWithPercentConfig = - newPlanUnitWithPercentPrice.unitWithPercentConfig - this.currency = newPlanUnitWithPercentPrice.currency - additionalProperties(newPlanUnitWithPercentPrice.additionalProperties) + conversionRate = newPlanUnitWithPercentPrice.conversionRate + modelType = newPlanUnitWithPercentPrice.modelType + unitWithPercentConfig = newPlanUnitWithPercentPrice.unitWithPercentConfig + currency = newPlanUnitWithPercentPrice.currency + additionalProperties = + newPlanUnitWithPercentPrice.additionalProperties.toMutableMap() } /** @@ -14966,75 +11937,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -15042,37 +11970,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -15080,17 +11988,7 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField - ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } + ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** * Within each billing cycle, specifies the cadence at which invoices are produced. @@ -15098,69 +11996,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType + fun unitWithPercentConfig(unitWithPercentConfig: UnitWithPercentConfig) = apply { + this.unitWithPercentConfig = unitWithPercentConfig } - fun unitWithPercentConfig(unitWithPercentConfig: UnitWithPercentConfig) = - unitWithPercentConfig(JsonField.of(unitWithPercentConfig)) - - @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun unitWithPercentConfig(unitWithPercentConfig: JsonField) = - apply { - this.unitWithPercentConfig = unitWithPercentConfig - } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) - /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15168,22 +12029,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanUnitWithPercentPrice = NewPlanUnitWithPercentPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithPercentConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithPercentConfig) { + "`unitWithPercentConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -15321,25 +12192,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithPercentConfig.Builder::class) @NoAutoDetect class UnitWithPercentConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithPercentConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15353,17 +12217,17 @@ constructor( @JvmSynthetic internal fun from(unitWithPercentConfig: UnitWithPercentConfig) = apply { - additionalProperties(unitWithPercentConfig.additionalProperties) + additionalProperties = + unitWithPercentConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15371,6 +12235,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithPercentConfig = UnitWithPercentConfig(additionalProperties.toImmutable()) } @@ -15396,41 +12268,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15440,45 +12297,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15486,10 +12332,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -15574,41 +12430,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15618,45 +12459,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15664,10 +12494,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -15753,25 +12593,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15785,17 +12618,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15803,6 +12635,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -15841,209 +12681,112 @@ constructor( "NewPlanUnitWithPercentPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithPercentConfig=$unitWithPercentConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanPackageWithAllocationPrice.Builder::class) @NoAutoDetect class NewPlanPackageWithAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageWithAllocationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_with_allocation_config") + private val packageWithAllocationConfig: PackageWithAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageWithAllocationConfig(): PackageWithAllocationConfig = - packageWithAllocationConfig.getRequired("package_with_allocation_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun _packageWithAllocationConfig() = packageWithAllocationConfig + fun packageWithAllocationConfig(): PackageWithAllocationConfig = + packageWithAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanPackageWithAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageWithAllocationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16053,49 +12796,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageWithAllocationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageWithAllocationConfig: PackageWithAllocationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newPlanPackageWithAllocationPrice: NewPlanPackageWithAllocationPrice ) = apply { - this.metadata = newPlanPackageWithAllocationPrice.metadata - this.externalPriceId = newPlanPackageWithAllocationPrice.externalPriceId - this.name = newPlanPackageWithAllocationPrice.name - this.billableMetricId = newPlanPackageWithAllocationPrice.billableMetricId - this.itemId = newPlanPackageWithAllocationPrice.itemId - this.billedInAdvance = newPlanPackageWithAllocationPrice.billedInAdvance - this.fixedPriceQuantity = newPlanPackageWithAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanPackageWithAllocationPrice.invoiceGroupingKey - this.cadence = newPlanPackageWithAllocationPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanPackageWithAllocationPrice.metadata + externalPriceId = newPlanPackageWithAllocationPrice.externalPriceId + name = newPlanPackageWithAllocationPrice.name + billableMetricId = newPlanPackageWithAllocationPrice.billableMetricId + itemId = newPlanPackageWithAllocationPrice.itemId + billedInAdvance = newPlanPackageWithAllocationPrice.billedInAdvance + fixedPriceQuantity = newPlanPackageWithAllocationPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanPackageWithAllocationPrice.invoiceGroupingKey + cadence = newPlanPackageWithAllocationPrice.cadence + billingCycleConfiguration = newPlanPackageWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanPackageWithAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newPlanPackageWithAllocationPrice.conversionRate - this.modelType = newPlanPackageWithAllocationPrice.modelType - this.packageWithAllocationConfig = + conversionRate = newPlanPackageWithAllocationPrice.conversionRate + modelType = newPlanPackageWithAllocationPrice.modelType + packageWithAllocationConfig = newPlanPackageWithAllocationPrice.packageWithAllocationConfig - this.currency = newPlanPackageWithAllocationPrice.currency - additionalProperties(newPlanPackageWithAllocationPrice.additionalProperties) + currency = newPlanPackageWithAllocationPrice.currency + additionalProperties = + newPlanPackageWithAllocationPrice.additionalProperties.toMutableMap() } /** @@ -16103,75 +12844,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -16179,37 +12877,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -16217,16 +12895,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -16235,69 +12903,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun packageWithAllocationConfig( packageWithAllocationConfig: PackageWithAllocationConfig - ) = packageWithAllocationConfig(JsonField.of(packageWithAllocationConfig)) - - @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun packageWithAllocationConfig( - packageWithAllocationConfig: JsonField ) = apply { this.packageWithAllocationConfig = packageWithAllocationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16305,22 +12936,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanPackageWithAllocationPrice = NewPlanPackageWithAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageWithAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageWithAllocationConfig) { + "`packageWithAllocationConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -16458,25 +13099,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageWithAllocationConfig.Builder::class) @NoAutoDetect class PackageWithAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageWithAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16491,17 +13125,17 @@ constructor( @JvmSynthetic internal fun from(packageWithAllocationConfig: PackageWithAllocationConfig) = apply { - additionalProperties(packageWithAllocationConfig.additionalProperties) + additionalProperties = + packageWithAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16509,6 +13143,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageWithAllocationConfig = PackageWithAllocationConfig(additionalProperties.toImmutable()) } @@ -16534,41 +13176,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16578,45 +13205,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16624,10 +13240,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -16712,41 +13338,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16756,45 +13367,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16802,10 +13402,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -16891,25 +13501,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16923,17 +13526,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16941,6 +13543,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -16979,209 +13589,111 @@ constructor( "NewPlanPackageWithAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageWithAllocationConfig=$packageWithAllocationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanTierWithProrationPrice.Builder::class) @NoAutoDetect class NewPlanTierWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithProrationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_proration_config") + private val tieredWithProrationConfig: TieredWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithProrationConfig(): TieredWithProrationConfig = - tieredWithProrationConfig.getRequired("tiered_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun _tieredWithProrationConfig() = tieredWithProrationConfig + fun tieredWithProrationConfig(): TieredWithProrationConfig = tieredWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanTierWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithProrationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17191,48 +13703,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithProrationConfig: TieredWithProrationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanTierWithProrationPrice: NewPlanTierWithProrationPrice) = apply { - this.metadata = newPlanTierWithProrationPrice.metadata - this.externalPriceId = newPlanTierWithProrationPrice.externalPriceId - this.name = newPlanTierWithProrationPrice.name - this.billableMetricId = newPlanTierWithProrationPrice.billableMetricId - this.itemId = newPlanTierWithProrationPrice.itemId - this.billedInAdvance = newPlanTierWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = newPlanTierWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanTierWithProrationPrice.invoiceGroupingKey - this.cadence = newPlanTierWithProrationPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanTierWithProrationPrice.metadata + externalPriceId = newPlanTierWithProrationPrice.externalPriceId + name = newPlanTierWithProrationPrice.name + billableMetricId = newPlanTierWithProrationPrice.billableMetricId + itemId = newPlanTierWithProrationPrice.itemId + billedInAdvance = newPlanTierWithProrationPrice.billedInAdvance + fixedPriceQuantity = newPlanTierWithProrationPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanTierWithProrationPrice.invoiceGroupingKey + cadence = newPlanTierWithProrationPrice.cadence + billingCycleConfiguration = newPlanTierWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanTierWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newPlanTierWithProrationPrice.conversionRate - this.modelType = newPlanTierWithProrationPrice.modelType - this.tieredWithProrationConfig = + conversionRate = newPlanTierWithProrationPrice.conversionRate + modelType = newPlanTierWithProrationPrice.modelType + tieredWithProrationConfig = newPlanTierWithProrationPrice.tieredWithProrationConfig - this.currency = newPlanTierWithProrationPrice.currency - additionalProperties(newPlanTierWithProrationPrice.additionalProperties) + currency = newPlanTierWithProrationPrice.currency + additionalProperties = + newPlanTierWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -17240,75 +13750,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -17316,37 +13783,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -17354,16 +13801,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -17372,69 +13809,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithProrationConfig( tieredWithProrationConfig: TieredWithProrationConfig - ) = tieredWithProrationConfig(JsonField.of(tieredWithProrationConfig)) - - @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun tieredWithProrationConfig( - tieredWithProrationConfig: JsonField ) = apply { this.tieredWithProrationConfig = tieredWithProrationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17442,22 +13842,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanTierWithProrationPrice = NewPlanTierWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithProrationConfig) { + "`tieredWithProrationConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -17595,25 +14005,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithProrationConfig.Builder::class) @NoAutoDetect class TieredWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17628,17 +14031,17 @@ constructor( @JvmSynthetic internal fun from(tieredWithProrationConfig: TieredWithProrationConfig) = apply { - additionalProperties(tieredWithProrationConfig.additionalProperties) + additionalProperties = + tieredWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17646,6 +14049,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithProrationConfig = TieredWithProrationConfig(additionalProperties.toImmutable()) } @@ -17671,41 +14082,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17715,45 +14111,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17761,10 +14146,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -17849,41 +14244,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17893,45 +14273,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17939,10 +14308,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -18028,25 +14407,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18060,17 +14432,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18078,6 +14449,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -18116,209 +14495,111 @@ constructor( "NewPlanTierWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithProrationConfig=$tieredWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanUnitWithProrationPrice.Builder::class) @NoAutoDetect class NewPlanUnitWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithProrationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_proration_config") + private val unitWithProrationConfig: UnitWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithProrationConfig(): UnitWithProrationConfig = - unitWithProrationConfig.getRequired("unit_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun _unitWithProrationConfig() = unitWithProrationConfig + fun unitWithProrationConfig(): UnitWithProrationConfig = unitWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanUnitWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithProrationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18328,48 +14609,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithProrationConfig: UnitWithProrationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanUnitWithProrationPrice: NewPlanUnitWithProrationPrice) = apply { - this.metadata = newPlanUnitWithProrationPrice.metadata - this.externalPriceId = newPlanUnitWithProrationPrice.externalPriceId - this.name = newPlanUnitWithProrationPrice.name - this.billableMetricId = newPlanUnitWithProrationPrice.billableMetricId - this.itemId = newPlanUnitWithProrationPrice.itemId - this.billedInAdvance = newPlanUnitWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = newPlanUnitWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanUnitWithProrationPrice.invoiceGroupingKey - this.cadence = newPlanUnitWithProrationPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanUnitWithProrationPrice.metadata + externalPriceId = newPlanUnitWithProrationPrice.externalPriceId + name = newPlanUnitWithProrationPrice.name + billableMetricId = newPlanUnitWithProrationPrice.billableMetricId + itemId = newPlanUnitWithProrationPrice.itemId + billedInAdvance = newPlanUnitWithProrationPrice.billedInAdvance + fixedPriceQuantity = newPlanUnitWithProrationPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanUnitWithProrationPrice.invoiceGroupingKey + cadence = newPlanUnitWithProrationPrice.cadence + billingCycleConfiguration = newPlanUnitWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanUnitWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newPlanUnitWithProrationPrice.conversionRate - this.modelType = newPlanUnitWithProrationPrice.modelType - this.unitWithProrationConfig = + conversionRate = newPlanUnitWithProrationPrice.conversionRate + modelType = newPlanUnitWithProrationPrice.modelType + unitWithProrationConfig = newPlanUnitWithProrationPrice.unitWithProrationConfig - this.currency = newPlanUnitWithProrationPrice.currency - additionalProperties(newPlanUnitWithProrationPrice.additionalProperties) + currency = newPlanUnitWithProrationPrice.currency + additionalProperties = + newPlanUnitWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -18377,75 +14656,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -18453,37 +14689,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -18491,16 +14707,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -18509,68 +14715,33 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithProrationConfig(unitWithProrationConfig: UnitWithProrationConfig) = - unitWithProrationConfig(JsonField.of(unitWithProrationConfig)) - - @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun unitWithProrationConfig( - unitWithProrationConfig: JsonField - ) = apply { this.unitWithProrationConfig = unitWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithProrationConfig = unitWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18578,22 +14749,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanUnitWithProrationPrice = NewPlanUnitWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithProrationConfig) { + "`unitWithProrationConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -18731,25 +14912,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithProrationConfig.Builder::class) @NoAutoDetect class UnitWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18763,17 +14937,17 @@ constructor( @JvmSynthetic internal fun from(unitWithProrationConfig: UnitWithProrationConfig) = apply { - additionalProperties(unitWithProrationConfig.additionalProperties) + additionalProperties = + unitWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18781,6 +14955,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithProrationConfig = UnitWithProrationConfig(additionalProperties.toImmutable()) } @@ -18806,41 +14988,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18850,45 +15017,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18896,10 +15052,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -18984,41 +15150,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19028,45 +15179,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19074,10 +15214,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -19163,25 +15313,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19195,17 +15338,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19213,6 +15355,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -19236,224 +15386,126 @@ constructor( override fun equals(other: Any?): Boolean { if (this === other) { return true - } - - return /* spotless:off */ other is NewPlanUnitWithProrationPrice && metadata == other.metadata && externalPriceId == other.externalPriceId && name == other.name && billableMetricId == other.billableMetricId && itemId == other.itemId && billedInAdvance == other.billedInAdvance && fixedPriceQuantity == other.fixedPriceQuantity && invoiceGroupingKey == other.invoiceGroupingKey && cadence == other.cadence && billingCycleConfiguration == other.billingCycleConfiguration && invoicingCycleConfiguration == other.invoicingCycleConfiguration && conversionRate == other.conversionRate && modelType == other.modelType && unitWithProrationConfig == other.unitWithProrationConfig && currency == other.currency && additionalProperties == other.additionalProperties /* spotless:on */ - } - - /* spotless:off */ - private val hashCode: Int by lazy { Objects.hash(metadata, externalPriceId, name, billableMetricId, itemId, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, cadence, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, modelType, unitWithProrationConfig, currency, additionalProperties) } - /* spotless:on */ - - override fun hashCode(): Int = hashCode - - override fun toString() = - "NewPlanUnitWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithProrationConfig=$unitWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" - } - - @JsonDeserialize(builder = NewPlanGroupedAllocationPrice.Builder::class) - @NoAutoDetect - class NewPlanGroupedAllocationPrice - private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedAllocationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, - ) { - - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + } - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + return /* spotless:off */ other is NewPlanUnitWithProrationPrice && metadata == other.metadata && externalPriceId == other.externalPriceId && name == other.name && billableMetricId == other.billableMetricId && itemId == other.itemId && billedInAdvance == other.billedInAdvance && fixedPriceQuantity == other.fixedPriceQuantity && invoiceGroupingKey == other.invoiceGroupingKey && cadence == other.cadence && billingCycleConfiguration == other.billingCycleConfiguration && invoicingCycleConfiguration == other.invoicingCycleConfiguration && conversionRate == other.conversionRate && modelType == other.modelType && unitWithProrationConfig == other.unitWithProrationConfig && currency == other.currency && additionalProperties == other.additionalProperties /* spotless:on */ + } - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(metadata, externalPriceId, name, billableMetricId, itemId, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, cadence, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, modelType, unitWithProrationConfig, currency, additionalProperties) } + /* spotless:on */ - fun modelType(): ModelType = modelType.getRequired("model_type") + override fun hashCode(): Int = hashCode - fun groupedAllocationConfig(): GroupedAllocationConfig = - groupedAllocationConfig.getRequired("grouped_allocation_config") + override fun toString() = + "NewPlanUnitWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithProrationConfig=$unitWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" + } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) + @NoAutoDetect + class NewPlanGroupedAllocationPrice + @JsonCreator + private constructor( + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_allocation_config") + private val groupedAllocationConfig: GroupedAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), + ) { /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun _groupedAllocationConfig() = groupedAllocationConfig + fun groupedAllocationConfig(): GroupedAllocationConfig = groupedAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanGroupedAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedAllocationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19463,48 +15515,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedAllocationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedAllocationConfig: GroupedAllocationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanGroupedAllocationPrice: NewPlanGroupedAllocationPrice) = apply { - this.metadata = newPlanGroupedAllocationPrice.metadata - this.externalPriceId = newPlanGroupedAllocationPrice.externalPriceId - this.name = newPlanGroupedAllocationPrice.name - this.billableMetricId = newPlanGroupedAllocationPrice.billableMetricId - this.itemId = newPlanGroupedAllocationPrice.itemId - this.billedInAdvance = newPlanGroupedAllocationPrice.billedInAdvance - this.fixedPriceQuantity = newPlanGroupedAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanGroupedAllocationPrice.invoiceGroupingKey - this.cadence = newPlanGroupedAllocationPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanGroupedAllocationPrice.metadata + externalPriceId = newPlanGroupedAllocationPrice.externalPriceId + name = newPlanGroupedAllocationPrice.name + billableMetricId = newPlanGroupedAllocationPrice.billableMetricId + itemId = newPlanGroupedAllocationPrice.itemId + billedInAdvance = newPlanGroupedAllocationPrice.billedInAdvance + fixedPriceQuantity = newPlanGroupedAllocationPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanGroupedAllocationPrice.invoiceGroupingKey + cadence = newPlanGroupedAllocationPrice.cadence + billingCycleConfiguration = newPlanGroupedAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanGroupedAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newPlanGroupedAllocationPrice.conversionRate - this.modelType = newPlanGroupedAllocationPrice.modelType - this.groupedAllocationConfig = + conversionRate = newPlanGroupedAllocationPrice.conversionRate + modelType = newPlanGroupedAllocationPrice.modelType + groupedAllocationConfig = newPlanGroupedAllocationPrice.groupedAllocationConfig - this.currency = newPlanGroupedAllocationPrice.currency - additionalProperties(newPlanGroupedAllocationPrice.additionalProperties) + currency = newPlanGroupedAllocationPrice.currency + additionalProperties = + newPlanGroupedAllocationPrice.additionalProperties.toMutableMap() } /** @@ -19512,75 +15562,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -19588,37 +15595,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -19626,16 +15613,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -19644,68 +15621,33 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedAllocationConfig(groupedAllocationConfig: GroupedAllocationConfig) = - groupedAllocationConfig(JsonField.of(groupedAllocationConfig)) - - @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun groupedAllocationConfig( - groupedAllocationConfig: JsonField - ) = apply { this.groupedAllocationConfig = groupedAllocationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.groupedAllocationConfig = groupedAllocationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19713,22 +15655,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanGroupedAllocationPrice = NewPlanGroupedAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedAllocationConfig) { + "`groupedAllocationConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -19815,25 +15767,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedAllocationConfig.Builder::class) @NoAutoDetect class GroupedAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19847,17 +15792,17 @@ constructor( @JvmSynthetic internal fun from(groupedAllocationConfig: GroupedAllocationConfig) = apply { - additionalProperties(groupedAllocationConfig.additionalProperties) + additionalProperties = + groupedAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19865,6 +15810,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedAllocationConfig = GroupedAllocationConfig(additionalProperties.toImmutable()) } @@ -19941,41 +15894,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19985,45 +15923,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20031,10 +15958,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -20119,41 +16056,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20163,45 +16085,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20209,10 +16120,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -20298,25 +16219,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20330,17 +16244,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20348,6 +16261,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -20386,210 +16307,112 @@ constructor( "NewPlanGroupedAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedAllocationConfig=$groupedAllocationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanGroupedWithProratedMinimumPrice.Builder::class) @NoAutoDetect class NewPlanGroupedWithProratedMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedWithProratedMinimumConfig: - JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_prorated_minimum_config") + private val groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = - groupedWithProratedMinimumConfig.getRequired("grouped_with_prorated_minimum_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun _groupedWithProratedMinimumConfig() = groupedWithProratedMinimumConfig + fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = + groupedWithProratedMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanGroupedWithProratedMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedWithProratedMinimumConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20599,54 +16422,48 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedWithProratedMinimumConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig? = + null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newPlanGroupedWithProratedMinimumPrice: NewPlanGroupedWithProratedMinimumPrice ) = apply { - this.metadata = newPlanGroupedWithProratedMinimumPrice.metadata - this.externalPriceId = newPlanGroupedWithProratedMinimumPrice.externalPriceId - this.name = newPlanGroupedWithProratedMinimumPrice.name - this.billableMetricId = newPlanGroupedWithProratedMinimumPrice.billableMetricId - this.itemId = newPlanGroupedWithProratedMinimumPrice.itemId - this.billedInAdvance = newPlanGroupedWithProratedMinimumPrice.billedInAdvance - this.fixedPriceQuantity = - newPlanGroupedWithProratedMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newPlanGroupedWithProratedMinimumPrice.invoiceGroupingKey - this.cadence = newPlanGroupedWithProratedMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanGroupedWithProratedMinimumPrice.metadata + externalPriceId = newPlanGroupedWithProratedMinimumPrice.externalPriceId + name = newPlanGroupedWithProratedMinimumPrice.name + billableMetricId = newPlanGroupedWithProratedMinimumPrice.billableMetricId + itemId = newPlanGroupedWithProratedMinimumPrice.itemId + billedInAdvance = newPlanGroupedWithProratedMinimumPrice.billedInAdvance + fixedPriceQuantity = newPlanGroupedWithProratedMinimumPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanGroupedWithProratedMinimumPrice.invoiceGroupingKey + cadence = newPlanGroupedWithProratedMinimumPrice.cadence + billingCycleConfiguration = newPlanGroupedWithProratedMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanGroupedWithProratedMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newPlanGroupedWithProratedMinimumPrice.conversionRate - this.modelType = newPlanGroupedWithProratedMinimumPrice.modelType - this.groupedWithProratedMinimumConfig = + conversionRate = newPlanGroupedWithProratedMinimumPrice.conversionRate + modelType = newPlanGroupedWithProratedMinimumPrice.modelType + groupedWithProratedMinimumConfig = newPlanGroupedWithProratedMinimumPrice.groupedWithProratedMinimumConfig - this.currency = newPlanGroupedWithProratedMinimumPrice.currency - additionalProperties( - newPlanGroupedWithProratedMinimumPrice.additionalProperties - ) + currency = newPlanGroupedWithProratedMinimumPrice.currency + additionalProperties = + newPlanGroupedWithProratedMinimumPrice.additionalProperties.toMutableMap() } /** @@ -20654,75 +16471,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -20730,37 +16504,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -20768,16 +16522,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -20786,45 +16530,17 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedWithProratedMinimumConfig( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig - ) = groupedWithProratedMinimumConfig(JsonField.of(groupedWithProratedMinimumConfig)) - - @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun groupedWithProratedMinimumConfig( - groupedWithProratedMinimumConfig: JsonField ) = apply { this.groupedWithProratedMinimumConfig = groupedWithProratedMinimumConfig } @@ -20833,24 +16549,15 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20858,22 +16565,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanGroupedWithProratedMinimumPrice = NewPlanGroupedWithProratedMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedWithProratedMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedWithProratedMinimumConfig) { + "`groupedWithProratedMinimumConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -20960,25 +16677,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithProratedMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithProratedMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedWithProratedMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20994,17 +16704,17 @@ constructor( internal fun from( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = apply { - additionalProperties(groupedWithProratedMinimumConfig.additionalProperties) + additionalProperties = + groupedWithProratedMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21012,6 +16722,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithProratedMinimumConfig = GroupedWithProratedMinimumConfig(additionalProperties.toImmutable()) } @@ -21089,41 +16807,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21133,45 +16836,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21179,10 +16871,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -21267,41 +16969,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21311,45 +16998,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21357,10 +17033,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -21446,25 +17132,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21478,17 +17157,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21496,6 +17174,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -21534,209 +17220,112 @@ constructor( "NewPlanGroupedWithProratedMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithProratedMinimumConfig=$groupedWithProratedMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanGroupedWithMeteredMinimumPrice.Builder::class) @NoAutoDetect class NewPlanGroupedWithMeteredMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedWithMeteredMinimumConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_metered_minimum_config") + private val groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedWithMeteredMinimumConfig(): GroupedWithMeteredMinimumConfig = - groupedWithMeteredMinimumConfig.getRequired("grouped_with_metered_minimum_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_metered_minimum_config") - @ExcludeMissing - fun _groupedWithMeteredMinimumConfig() = groupedWithMeteredMinimumConfig + fun groupedWithMeteredMinimumConfig(): GroupedWithMeteredMinimumConfig = + groupedWithMeteredMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanGroupedWithMeteredMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedWithMeteredMinimumConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21746,52 +17335,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedWithMeteredMinimumConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newPlanGroupedWithMeteredMinimumPrice: NewPlanGroupedWithMeteredMinimumPrice ) = apply { - this.metadata = newPlanGroupedWithMeteredMinimumPrice.metadata - this.externalPriceId = newPlanGroupedWithMeteredMinimumPrice.externalPriceId - this.name = newPlanGroupedWithMeteredMinimumPrice.name - this.billableMetricId = newPlanGroupedWithMeteredMinimumPrice.billableMetricId - this.itemId = newPlanGroupedWithMeteredMinimumPrice.itemId - this.billedInAdvance = newPlanGroupedWithMeteredMinimumPrice.billedInAdvance - this.fixedPriceQuantity = - newPlanGroupedWithMeteredMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newPlanGroupedWithMeteredMinimumPrice.invoiceGroupingKey - this.cadence = newPlanGroupedWithMeteredMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanGroupedWithMeteredMinimumPrice.metadata + externalPriceId = newPlanGroupedWithMeteredMinimumPrice.externalPriceId + name = newPlanGroupedWithMeteredMinimumPrice.name + billableMetricId = newPlanGroupedWithMeteredMinimumPrice.billableMetricId + itemId = newPlanGroupedWithMeteredMinimumPrice.itemId + billedInAdvance = newPlanGroupedWithMeteredMinimumPrice.billedInAdvance + fixedPriceQuantity = newPlanGroupedWithMeteredMinimumPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanGroupedWithMeteredMinimumPrice.invoiceGroupingKey + cadence = newPlanGroupedWithMeteredMinimumPrice.cadence + billingCycleConfiguration = newPlanGroupedWithMeteredMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanGroupedWithMeteredMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newPlanGroupedWithMeteredMinimumPrice.conversionRate - this.modelType = newPlanGroupedWithMeteredMinimumPrice.modelType - this.groupedWithMeteredMinimumConfig = + conversionRate = newPlanGroupedWithMeteredMinimumPrice.conversionRate + modelType = newPlanGroupedWithMeteredMinimumPrice.modelType + groupedWithMeteredMinimumConfig = newPlanGroupedWithMeteredMinimumPrice.groupedWithMeteredMinimumConfig - this.currency = newPlanGroupedWithMeteredMinimumPrice.currency - additionalProperties(newPlanGroupedWithMeteredMinimumPrice.additionalProperties) + currency = newPlanGroupedWithMeteredMinimumPrice.currency + additionalProperties = + newPlanGroupedWithMeteredMinimumPrice.additionalProperties.toMutableMap() } /** @@ -21799,113 +17383,50 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { - this.billedInAdvance = billedInAdvance - } - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. + * is true, and in-arrears if this is false. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) + fun billedInAdvance(billedInAdvance: Boolean) = apply { + this.billedInAdvance = billedInAdvance + } /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -21913,16 +17434,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -21931,69 +17442,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedWithMeteredMinimumConfig( groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig - ) = groupedWithMeteredMinimumConfig(JsonField.of(groupedWithMeteredMinimumConfig)) - - @JsonProperty("grouped_with_metered_minimum_config") - @ExcludeMissing - fun groupedWithMeteredMinimumConfig( - groupedWithMeteredMinimumConfig: JsonField ) = apply { this.groupedWithMeteredMinimumConfig = groupedWithMeteredMinimumConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22001,22 +17475,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanGroupedWithMeteredMinimumPrice = NewPlanGroupedWithMeteredMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedWithMeteredMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedWithMeteredMinimumConfig) { + "`groupedWithMeteredMinimumConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -22103,25 +17587,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithMeteredMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithMeteredMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedWithMeteredMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22137,17 +17614,17 @@ constructor( internal fun from( groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig ) = apply { - additionalProperties(groupedWithMeteredMinimumConfig.additionalProperties) + additionalProperties = + groupedWithMeteredMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22155,6 +17632,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithMeteredMinimumConfig = GroupedWithMeteredMinimumConfig(additionalProperties.toImmutable()) } @@ -22231,41 +17716,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22275,45 +17745,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22321,10 +17780,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -22409,41 +17878,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22453,45 +17907,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22499,10 +17942,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -22588,25 +18041,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22620,17 +18066,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22638,6 +18083,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -22676,209 +18129,112 @@ constructor( "NewPlanGroupedWithMeteredMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithMeteredMinimumConfig=$groupedWithMeteredMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanMatrixWithDisplayNamePrice.Builder::class) @NoAutoDetect class NewPlanMatrixWithDisplayNamePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val matrixWithDisplayNameConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_with_display_name_config") + private val matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun matrixWithDisplayNameConfig(): MatrixWithDisplayNameConfig = - matrixWithDisplayNameConfig.getRequired("matrix_with_display_name_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("matrix_with_display_name_config") - @ExcludeMissing - fun _matrixWithDisplayNameConfig() = matrixWithDisplayNameConfig + fun matrixWithDisplayNameConfig(): MatrixWithDisplayNameConfig = + matrixWithDisplayNameConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanMatrixWithDisplayNamePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - matrixWithDisplayNameConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22888,49 +18244,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var matrixWithDisplayNameConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newPlanMatrixWithDisplayNamePrice: NewPlanMatrixWithDisplayNamePrice ) = apply { - this.metadata = newPlanMatrixWithDisplayNamePrice.metadata - this.externalPriceId = newPlanMatrixWithDisplayNamePrice.externalPriceId - this.name = newPlanMatrixWithDisplayNamePrice.name - this.billableMetricId = newPlanMatrixWithDisplayNamePrice.billableMetricId - this.itemId = newPlanMatrixWithDisplayNamePrice.itemId - this.billedInAdvance = newPlanMatrixWithDisplayNamePrice.billedInAdvance - this.fixedPriceQuantity = newPlanMatrixWithDisplayNamePrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanMatrixWithDisplayNamePrice.invoiceGroupingKey - this.cadence = newPlanMatrixWithDisplayNamePrice.cadence - this.billingCycleConfiguration = + metadata = newPlanMatrixWithDisplayNamePrice.metadata + externalPriceId = newPlanMatrixWithDisplayNamePrice.externalPriceId + name = newPlanMatrixWithDisplayNamePrice.name + billableMetricId = newPlanMatrixWithDisplayNamePrice.billableMetricId + itemId = newPlanMatrixWithDisplayNamePrice.itemId + billedInAdvance = newPlanMatrixWithDisplayNamePrice.billedInAdvance + fixedPriceQuantity = newPlanMatrixWithDisplayNamePrice.fixedPriceQuantity + invoiceGroupingKey = newPlanMatrixWithDisplayNamePrice.invoiceGroupingKey + cadence = newPlanMatrixWithDisplayNamePrice.cadence + billingCycleConfiguration = newPlanMatrixWithDisplayNamePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanMatrixWithDisplayNamePrice.invoicingCycleConfiguration - this.conversionRate = newPlanMatrixWithDisplayNamePrice.conversionRate - this.modelType = newPlanMatrixWithDisplayNamePrice.modelType - this.matrixWithDisplayNameConfig = + conversionRate = newPlanMatrixWithDisplayNamePrice.conversionRate + modelType = newPlanMatrixWithDisplayNamePrice.modelType + matrixWithDisplayNameConfig = newPlanMatrixWithDisplayNamePrice.matrixWithDisplayNameConfig - this.currency = newPlanMatrixWithDisplayNamePrice.currency - additionalProperties(newPlanMatrixWithDisplayNamePrice.additionalProperties) + currency = newPlanMatrixWithDisplayNamePrice.currency + additionalProperties = + newPlanMatrixWithDisplayNamePrice.additionalProperties.toMutableMap() } /** @@ -22938,75 +18292,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -23014,37 +18325,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -23052,16 +18343,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -23070,69 +18351,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun matrixWithDisplayNameConfig( - matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig - ) = matrixWithDisplayNameConfig(JsonField.of(matrixWithDisplayNameConfig)) - - @JsonProperty("matrix_with_display_name_config") - @ExcludeMissing - fun matrixWithDisplayNameConfig( - matrixWithDisplayNameConfig: JsonField - ) = apply { this.matrixWithDisplayNameConfig = matrixWithDisplayNameConfig } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun matrixWithDisplayNameConfig( + matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig + ) = apply { this.matrixWithDisplayNameConfig = matrixWithDisplayNameConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23140,22 +18384,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanMatrixWithDisplayNamePrice = NewPlanMatrixWithDisplayNamePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - matrixWithDisplayNameConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(matrixWithDisplayNameConfig) { + "`matrixWithDisplayNameConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -23242,25 +18496,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixWithDisplayNameConfig.Builder::class) @NoAutoDetect class MatrixWithDisplayNameConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixWithDisplayNameConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23275,17 +18522,17 @@ constructor( @JvmSynthetic internal fun from(matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig) = apply { - additionalProperties(matrixWithDisplayNameConfig.additionalProperties) + additionalProperties = + matrixWithDisplayNameConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23293,6 +18540,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixWithDisplayNameConfig = MatrixWithDisplayNameConfig(additionalProperties.toImmutable()) } @@ -23369,41 +18624,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23413,45 +18653,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23459,10 +18688,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -23547,41 +18786,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23591,45 +18815,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23637,10 +18850,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -23726,25 +18949,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23758,17 +18974,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23776,6 +18991,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -23814,209 +19037,111 @@ constructor( "NewPlanMatrixWithDisplayNamePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixWithDisplayNameConfig=$matrixWithDisplayNameConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanBulkWithProrationPrice.Builder::class) @NoAutoDetect class NewPlanBulkWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkWithProrationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_with_proration_config") + private val bulkWithProrationConfig: BulkWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkWithProrationConfig(): BulkWithProrationConfig = - bulkWithProrationConfig.getRequired("bulk_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun _bulkWithProrationConfig() = bulkWithProrationConfig + fun bulkWithProrationConfig(): BulkWithProrationConfig = bulkWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanBulkWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkWithProrationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24026,48 +19151,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkWithProrationConfig: BulkWithProrationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPlanBulkWithProrationPrice: NewPlanBulkWithProrationPrice) = apply { - this.metadata = newPlanBulkWithProrationPrice.metadata - this.externalPriceId = newPlanBulkWithProrationPrice.externalPriceId - this.name = newPlanBulkWithProrationPrice.name - this.billableMetricId = newPlanBulkWithProrationPrice.billableMetricId - this.itemId = newPlanBulkWithProrationPrice.itemId - this.billedInAdvance = newPlanBulkWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = newPlanBulkWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanBulkWithProrationPrice.invoiceGroupingKey - this.cadence = newPlanBulkWithProrationPrice.cadence - this.billingCycleConfiguration = + metadata = newPlanBulkWithProrationPrice.metadata + externalPriceId = newPlanBulkWithProrationPrice.externalPriceId + name = newPlanBulkWithProrationPrice.name + billableMetricId = newPlanBulkWithProrationPrice.billableMetricId + itemId = newPlanBulkWithProrationPrice.itemId + billedInAdvance = newPlanBulkWithProrationPrice.billedInAdvance + fixedPriceQuantity = newPlanBulkWithProrationPrice.fixedPriceQuantity + invoiceGroupingKey = newPlanBulkWithProrationPrice.invoiceGroupingKey + cadence = newPlanBulkWithProrationPrice.cadence + billingCycleConfiguration = newPlanBulkWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanBulkWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newPlanBulkWithProrationPrice.conversionRate - this.modelType = newPlanBulkWithProrationPrice.modelType - this.bulkWithProrationConfig = + conversionRate = newPlanBulkWithProrationPrice.conversionRate + modelType = newPlanBulkWithProrationPrice.modelType + bulkWithProrationConfig = newPlanBulkWithProrationPrice.bulkWithProrationConfig - this.currency = newPlanBulkWithProrationPrice.currency - additionalProperties(newPlanBulkWithProrationPrice.additionalProperties) + currency = newPlanBulkWithProrationPrice.currency + additionalProperties = + newPlanBulkWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -24075,75 +19198,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -24151,37 +19231,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -24189,16 +19249,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -24207,68 +19257,33 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun bulkWithProrationConfig(bulkWithProrationConfig: BulkWithProrationConfig) = - bulkWithProrationConfig(JsonField.of(bulkWithProrationConfig)) - - @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun bulkWithProrationConfig( - bulkWithProrationConfig: JsonField - ) = apply { this.bulkWithProrationConfig = bulkWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.bulkWithProrationConfig = bulkWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24276,46 +19291,49 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanBulkWithProrationPrice = NewPlanBulkWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkWithProrationConfig) { + "`bulkWithProrationConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkWithProrationConfig.Builder::class) @NoAutoDetect class BulkWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24329,17 +19347,17 @@ constructor( @JvmSynthetic internal fun from(bulkWithProrationConfig: BulkWithProrationConfig) = apply { - additionalProperties(bulkWithProrationConfig.additionalProperties) + additionalProperties = + bulkWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24347,6 +19365,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkWithProrationConfig = BulkWithProrationConfig(additionalProperties.toImmutable()) } @@ -24504,41 +19530,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24548,45 +19559,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24594,10 +19594,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -24682,41 +19692,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24726,45 +19721,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24772,10 +19756,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -24861,25 +19855,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24893,17 +19880,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24911,6 +19897,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -24949,209 +19943,112 @@ constructor( "NewPlanBulkWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkWithProrationConfig=$bulkWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewPlanGroupedTieredPackagePrice.Builder::class) @NoAutoDetect class NewPlanGroupedTieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedTieredPackageConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_tiered_package_config") + private val groupedTieredPackageConfig: GroupedTieredPackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed by - * setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this is - * true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. If - * unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedTieredPackageConfig(): GroupedTieredPackageConfig = - groupedTieredPackageConfig.getRequired("grouped_tiered_package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this price - * is billed. - */ - fun currency(): Optional = Optional.ofNullable(currency.getNullable("currency")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") @ExcludeMissing fun _conversionRate() = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_tiered_package_config") - @ExcludeMissing - fun _groupedTieredPackageConfig() = groupedTieredPackageConfig + fun groupedTieredPackageConfig(): GroupedTieredPackageConfig = + groupedTieredPackageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this price * is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPlanGroupedTieredPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedTieredPackageConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25161,49 +20058,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedTieredPackageConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedTieredPackageConfig: GroupedTieredPackageConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newPlanGroupedTieredPackagePrice: NewPlanGroupedTieredPackagePrice ) = apply { - this.metadata = newPlanGroupedTieredPackagePrice.metadata - this.externalPriceId = newPlanGroupedTieredPackagePrice.externalPriceId - this.name = newPlanGroupedTieredPackagePrice.name - this.billableMetricId = newPlanGroupedTieredPackagePrice.billableMetricId - this.itemId = newPlanGroupedTieredPackagePrice.itemId - this.billedInAdvance = newPlanGroupedTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = newPlanGroupedTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newPlanGroupedTieredPackagePrice.invoiceGroupingKey - this.cadence = newPlanGroupedTieredPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newPlanGroupedTieredPackagePrice.metadata + externalPriceId = newPlanGroupedTieredPackagePrice.externalPriceId + name = newPlanGroupedTieredPackagePrice.name + billableMetricId = newPlanGroupedTieredPackagePrice.billableMetricId + itemId = newPlanGroupedTieredPackagePrice.itemId + billedInAdvance = newPlanGroupedTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newPlanGroupedTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newPlanGroupedTieredPackagePrice.invoiceGroupingKey + cadence = newPlanGroupedTieredPackagePrice.cadence + billingCycleConfiguration = newPlanGroupedTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newPlanGroupedTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newPlanGroupedTieredPackagePrice.conversionRate - this.modelType = newPlanGroupedTieredPackagePrice.modelType - this.groupedTieredPackageConfig = + conversionRate = newPlanGroupedTieredPackagePrice.conversionRate + modelType = newPlanGroupedTieredPackagePrice.modelType + groupedTieredPackageConfig = newPlanGroupedTieredPackagePrice.groupedTieredPackageConfig - this.currency = newPlanGroupedTieredPackagePrice.currency - additionalProperties(newPlanGroupedTieredPackagePrice.additionalProperties) + currency = newPlanGroupedTieredPackagePrice.currency + additionalProperties = + newPlanGroupedTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -25211,75 +20106,32 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -25287,37 +20139,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -25325,16 +20157,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -25343,69 +20165,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedTieredPackageConfig( groupedTieredPackageConfig: GroupedTieredPackageConfig - ) = groupedTieredPackageConfig(JsonField.of(groupedTieredPackageConfig)) - - @JsonProperty("grouped_tiered_package_config") - @ExcludeMissing - fun groupedTieredPackageConfig( - groupedTieredPackageConfig: JsonField ) = apply { this.groupedTieredPackageConfig = groupedTieredPackageConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25413,22 +20198,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPlanGroupedTieredPackagePrice = NewPlanGroupedTieredPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedTieredPackageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedTieredPackageConfig) { + "`groupedTieredPackageConfig` is required but was not set" + }, currency, additionalProperties.toImmutable(), ) @@ -25515,25 +20310,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedTieredPackageConfig.Builder::class) @NoAutoDetect class GroupedTieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedTieredPackageConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25548,17 +20336,17 @@ constructor( @JvmSynthetic internal fun from(groupedTieredPackageConfig: GroupedTieredPackageConfig) = apply { - additionalProperties(groupedTieredPackageConfig.additionalProperties) + additionalProperties = + groupedTieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25566,6 +20354,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedTieredPackageConfig = GroupedTieredPackageConfig(additionalProperties.toImmutable()) } @@ -25642,41 +20438,26 @@ constructor( /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25686,45 +20467,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25732,10 +20502,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -25820,41 +20600,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") @ExcludeMissing fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25864,45 +20629,34 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25910,10 +20664,20 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -25999,25 +20763,18 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26031,17 +20788,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -26049,6 +20805,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -26093,11 +20857,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -26117,23 +20882,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanExternalPlanIdUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanExternalPlanIdUpdateParams.kt index a379262b..f32b0607 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanExternalPlanIdUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanExternalPlanIdUpdateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional @@ -57,13 +58,14 @@ constructor( } } - @JsonDeserialize(builder = PlanExternalPlanIdUpdateBody.Builder::class) @NoAutoDetect class PlanExternalPlanIdUpdateBody + @JsonCreator internal constructor( - private val externalPlanId: String?, - private val metadata: Metadata?, - private val additionalProperties: Map, + @JsonProperty("external_plan_id") private val externalPlanId: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -71,14 +73,15 @@ constructor( * alias for this Plan. Use this field to identify a plan by an existing identifier in your * system. */ - @JsonProperty("external_plan_id") fun externalPlanId(): String? = externalPlanId + @JsonProperty("external_plan_id") + fun externalPlanId(): Optional = Optional.ofNullable(externalPlanId) /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) @JsonAnyGetter @ExcludeMissing @@ -99,9 +102,10 @@ constructor( @JvmSynthetic internal fun from(planExternalPlanIdUpdateBody: PlanExternalPlanIdUpdateBody) = apply { - this.externalPlanId = planExternalPlanIdUpdateBody.externalPlanId - this.metadata = planExternalPlanIdUpdateBody.metadata - additionalProperties(planExternalPlanIdUpdateBody.additionalProperties) + externalPlanId = planExternalPlanIdUpdateBody.externalPlanId + metadata = planExternalPlanIdUpdateBody.metadata + additionalProperties = + planExternalPlanIdUpdateBody.additionalProperties.toMutableMap() } /** @@ -109,7 +113,6 @@ constructor( * alias for this Plan. Use this field to identify a plan by an existing identifier in * your system. */ - @JsonProperty("external_plan_id") fun externalPlanId(externalPlanId: String) = apply { this.externalPlanId = externalPlanId } @@ -119,23 +122,27 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PlanExternalPlanIdUpdateBody = PlanExternalPlanIdUpdateBody( externalPlanId, @@ -346,11 +353,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -370,23 +378,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanListPage.kt index 6e0fde12..432cbf2d 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.PlanService import java.util.Objects @@ -82,13 +83,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -152,17 +155,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } + fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanListPageAsync.kt index 29d84f71..9677bf4a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.PlanServiceAsync import java.util.Objects @@ -85,13 +86,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -155,17 +158,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } + fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanUpdateParams.kt index 691dab3e..1c5c78f2 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PlanUpdateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional @@ -57,13 +58,14 @@ constructor( } } - @JsonDeserialize(builder = PlanUpdateBody.Builder::class) @NoAutoDetect class PlanUpdateBody + @JsonCreator internal constructor( - private val externalPlanId: String?, - private val metadata: Metadata?, - private val additionalProperties: Map, + @JsonProperty("external_plan_id") private val externalPlanId: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -71,14 +73,15 @@ constructor( * alias for this Plan. Use this field to identify a plan by an existing identifier in your * system. */ - @JsonProperty("external_plan_id") fun externalPlanId(): String? = externalPlanId + @JsonProperty("external_plan_id") + fun externalPlanId(): Optional = Optional.ofNullable(externalPlanId) /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) @JsonAnyGetter @ExcludeMissing @@ -99,9 +102,9 @@ constructor( @JvmSynthetic internal fun from(planUpdateBody: PlanUpdateBody) = apply { - this.externalPlanId = planUpdateBody.externalPlanId - this.metadata = planUpdateBody.metadata - additionalProperties(planUpdateBody.additionalProperties) + externalPlanId = planUpdateBody.externalPlanId + metadata = planUpdateBody.metadata + additionalProperties = planUpdateBody.additionalProperties.toMutableMap() } /** @@ -109,7 +112,6 @@ constructor( * alias for this Plan. Use this field to identify a plan by an existing identifier in * your system. */ - @JsonProperty("external_plan_id") fun externalPlanId(externalPlanId: String) = apply { this.externalPlanId = externalPlanId } @@ -119,23 +121,27 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PlanUpdateBody = PlanUpdateBody( externalPlanId, @@ -341,11 +347,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -365,23 +372,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Price.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Price.kt index 85399d1f..7590446e 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Price.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Price.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -774,38 +775,81 @@ private constructor( } } - @JsonDeserialize(builder = UnitPrice.Builder::class) @NoAutoDetect class UnitPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val unitConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("unit_config") + @ExcludeMissing + private val unitConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -932,6 +976,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UnitPrice = apply { if (!validated) { metadata().validate() @@ -999,30 +1045,30 @@ private constructor( @JvmSynthetic internal fun from(unitPrice: UnitPrice) = apply { - this.metadata = unitPrice.metadata - this.id = unitPrice.id - this.name = unitPrice.name - this.externalPriceId = unitPrice.externalPriceId - this.priceType = unitPrice.priceType - this.modelType = unitPrice.modelType - this.createdAt = unitPrice.createdAt - this.cadence = unitPrice.cadence - this.billingCycleConfiguration = unitPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = unitPrice.invoicingCycleConfiguration - this.billableMetric = unitPrice.billableMetric - this.fixedPriceQuantity = unitPrice.fixedPriceQuantity - this.planPhaseOrder = unitPrice.planPhaseOrder - this.currency = unitPrice.currency - this.conversionRate = unitPrice.conversionRate - this.item = unitPrice.item - this.creditAllocation = unitPrice.creditAllocation - this.discount = unitPrice.discount - this.minimum = unitPrice.minimum - this.minimumAmount = unitPrice.minimumAmount - this.maximum = unitPrice.maximum - this.maximumAmount = unitPrice.maximumAmount - this.unitConfig = unitPrice.unitConfig - additionalProperties(unitPrice.additionalProperties) + metadata = unitPrice.metadata + id = unitPrice.id + name = unitPrice.name + externalPriceId = unitPrice.externalPriceId + priceType = unitPrice.priceType + modelType = unitPrice.modelType + createdAt = unitPrice.createdAt + cadence = unitPrice.cadence + billingCycleConfiguration = unitPrice.billingCycleConfiguration + invoicingCycleConfiguration = unitPrice.invoicingCycleConfiguration + billableMetric = unitPrice.billableMetric + fixedPriceQuantity = unitPrice.fixedPriceQuantity + planPhaseOrder = unitPrice.planPhaseOrder + currency = unitPrice.currency + conversionRate = unitPrice.conversionRate + item = unitPrice.item + creditAllocation = unitPrice.creditAllocation + discount = unitPrice.discount + minimum = unitPrice.minimum + minimumAmount = unitPrice.minimumAmount + maximum = unitPrice.maximum + maximumAmount = unitPrice.maximumAmount + unitConfig = unitPrice.unitConfig + additionalProperties = unitPrice.additionalProperties.toMutableMap() } /** @@ -1037,62 +1083,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -1101,8 +1129,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -1110,8 +1136,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -1119,106 +1143,87 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun unitConfig(unitConfig: UnitConfig) = unitConfig(JsonField.of(unitConfig)) - @JsonProperty("unit_config") - @ExcludeMissing fun unitConfig(unitConfig: JsonField) = apply { this.unitConfig = unitConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitPrice = UnitPrice( metadata, @@ -1248,16 +1253,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -1266,6 +1272,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -1287,24 +1295,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1312,6 +1317,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -1333,17 +1346,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -1356,6 +1372,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -1379,34 +1397,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1414,6 +1428,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -1578,17 +1600,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -1601,6 +1626,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -1624,34 +1651,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1659,6 +1681,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -1685,17 +1715,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -1708,6 +1741,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -1732,34 +1767,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1767,6 +1798,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -1850,17 +1889,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -1873,6 +1915,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -1896,31 +1940,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1928,6 +1967,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -1954,17 +2001,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -1990,6 +2040,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -2013,9 +2065,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -2023,8 +2075,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -2040,20 +2090,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2061,6 +2108,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -2092,19 +2147,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -2124,17 +2180,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2142,6 +2197,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2162,17 +2225,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -2198,6 +2264,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -2221,9 +2289,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -2231,8 +2299,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2248,20 +2314,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2269,6 +2332,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -2403,16 +2474,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitConfig.Builder::class) @NoAutoDetect class UnitConfig + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("unit_amount") + @ExcludeMissing + private val unitAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Rate per unit of usage */ fun unitAmount(): String = unitAmount.getRequired("unit_amount") @@ -2423,6 +2495,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UnitConfig = apply { if (!validated) { unitAmount() @@ -2444,28 +2518,25 @@ private constructor( @JvmSynthetic internal fun from(unitConfig: UnitConfig) = apply { - this.unitAmount = unitConfig.unitAmount - additionalProperties(unitConfig.additionalProperties) + unitAmount = unitConfig.unitAmount + additionalProperties = unitConfig.additionalProperties.toMutableMap() } /** Rate per unit of usage */ fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) /** Rate per unit of usage */ - @JsonProperty("unit_amount") - @ExcludeMissing fun unitAmount(unitAmount: JsonField) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2473,6 +2544,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitConfig = UnitConfig(unitAmount, additionalProperties.toImmutable()) } @@ -2512,38 +2591,81 @@ private constructor( "UnitPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, unitConfig=$unitConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PackagePrice.Builder::class) @NoAutoDetect class PackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val packageConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("package_config") + @ExcludeMissing + private val packageConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -2670,6 +2792,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PackagePrice = apply { if (!validated) { metadata().validate() @@ -2737,30 +2861,30 @@ private constructor( @JvmSynthetic internal fun from(packagePrice: PackagePrice) = apply { - this.metadata = packagePrice.metadata - this.id = packagePrice.id - this.name = packagePrice.name - this.externalPriceId = packagePrice.externalPriceId - this.priceType = packagePrice.priceType - this.modelType = packagePrice.modelType - this.createdAt = packagePrice.createdAt - this.cadence = packagePrice.cadence - this.billingCycleConfiguration = packagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = packagePrice.invoicingCycleConfiguration - this.billableMetric = packagePrice.billableMetric - this.fixedPriceQuantity = packagePrice.fixedPriceQuantity - this.planPhaseOrder = packagePrice.planPhaseOrder - this.currency = packagePrice.currency - this.conversionRate = packagePrice.conversionRate - this.item = packagePrice.item - this.creditAllocation = packagePrice.creditAllocation - this.discount = packagePrice.discount - this.minimum = packagePrice.minimum - this.minimumAmount = packagePrice.minimumAmount - this.maximum = packagePrice.maximum - this.maximumAmount = packagePrice.maximumAmount - this.packageConfig = packagePrice.packageConfig - additionalProperties(packagePrice.additionalProperties) + metadata = packagePrice.metadata + id = packagePrice.id + name = packagePrice.name + externalPriceId = packagePrice.externalPriceId + priceType = packagePrice.priceType + modelType = packagePrice.modelType + createdAt = packagePrice.createdAt + cadence = packagePrice.cadence + billingCycleConfiguration = packagePrice.billingCycleConfiguration + invoicingCycleConfiguration = packagePrice.invoicingCycleConfiguration + billableMetric = packagePrice.billableMetric + fixedPriceQuantity = packagePrice.fixedPriceQuantity + planPhaseOrder = packagePrice.planPhaseOrder + currency = packagePrice.currency + conversionRate = packagePrice.conversionRate + item = packagePrice.item + creditAllocation = packagePrice.creditAllocation + discount = packagePrice.discount + minimum = packagePrice.minimum + minimumAmount = packagePrice.minimumAmount + maximum = packagePrice.maximum + maximumAmount = packagePrice.maximumAmount + packageConfig = packagePrice.packageConfig + additionalProperties = packagePrice.additionalProperties.toMutableMap() } /** @@ -2775,62 +2899,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -2839,8 +2945,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -2848,8 +2952,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -2857,80 +2959,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -2938,26 +3018,29 @@ private constructor( fun packageConfig(packageConfig: PackageConfig) = packageConfig(JsonField.of(packageConfig)) - @JsonProperty("package_config") - @ExcludeMissing fun packageConfig(packageConfig: JsonField) = apply { this.packageConfig = packageConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackagePrice = PackagePrice( metadata, @@ -2987,16 +3070,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -3005,6 +3089,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -3026,24 +3112,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3051,6 +3134,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -3072,17 +3163,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -3095,6 +3189,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -3118,34 +3214,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3153,6 +3245,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -3317,17 +3417,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -3340,6 +3443,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -3363,34 +3468,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3398,6 +3498,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -3424,17 +3532,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -3447,6 +3558,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -3471,34 +3584,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3506,6 +3615,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -3589,17 +3706,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -3612,6 +3732,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -3635,31 +3757,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3667,6 +3784,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -3693,17 +3818,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -3729,6 +3857,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -3752,9 +3882,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -3762,8 +3892,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -3779,20 +3907,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3800,6 +3925,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -3831,19 +3964,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -3863,17 +3997,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3881,6 +4014,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -3901,17 +4042,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -3937,6 +4081,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -3960,9 +4106,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -3970,8 +4116,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -3987,20 +4131,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4008,6 +4149,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -4085,17 +4234,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageConfig.Builder::class) @NoAutoDetect class PackageConfig + @JsonCreator private constructor( - private val packageAmount: JsonField, - private val packageSize: JsonField, - private val additionalProperties: Map, + @JsonProperty("package_amount") + @ExcludeMissing + private val packageAmount: JsonField = JsonMissing.of(), + @JsonProperty("package_size") + @ExcludeMissing + private val packageSize: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** A currency amount to rate usage by */ fun packageAmount(): String = packageAmount.getRequired("package_amount") @@ -4118,6 +4270,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PackageConfig = apply { if (!validated) { packageAmount() @@ -4141,9 +4295,9 @@ private constructor( @JvmSynthetic internal fun from(packageConfig: PackageConfig) = apply { - this.packageAmount = packageConfig.packageAmount - this.packageSize = packageConfig.packageSize - additionalProperties(packageConfig.additionalProperties) + packageAmount = packageConfig.packageAmount + packageSize = packageConfig.packageSize + additionalProperties = packageConfig.additionalProperties.toMutableMap() } /** A currency amount to rate usage by */ @@ -4151,8 +4305,6 @@ private constructor( packageAmount(JsonField.of(packageAmount)) /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing fun packageAmount(packageAmount: JsonField) = apply { this.packageAmount = packageAmount } @@ -4167,20 +4319,17 @@ private constructor( * An integer amount to represent package size. For example, 1000 here would divide * usage by 1000 before multiplying by package_amount in rating */ - @JsonProperty("package_size") - @ExcludeMissing fun packageSize(packageSize: JsonField) = apply { this.packageSize = packageSize } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4188,6 +4337,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageConfig = PackageConfig( packageAmount, @@ -4289,38 +4446,81 @@ private constructor( "PackagePrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, packageConfig=$packageConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MatrixPrice.Builder::class) @NoAutoDetect class MatrixPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val matrixConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("matrix_config") + @ExcludeMissing + private val matrixConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -4447,6 +4647,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixPrice = apply { if (!validated) { metadata().validate() @@ -4514,30 +4716,30 @@ private constructor( @JvmSynthetic internal fun from(matrixPrice: MatrixPrice) = apply { - this.metadata = matrixPrice.metadata - this.id = matrixPrice.id - this.name = matrixPrice.name - this.externalPriceId = matrixPrice.externalPriceId - this.priceType = matrixPrice.priceType - this.modelType = matrixPrice.modelType - this.createdAt = matrixPrice.createdAt - this.cadence = matrixPrice.cadence - this.billingCycleConfiguration = matrixPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = matrixPrice.invoicingCycleConfiguration - this.billableMetric = matrixPrice.billableMetric - this.fixedPriceQuantity = matrixPrice.fixedPriceQuantity - this.planPhaseOrder = matrixPrice.planPhaseOrder - this.currency = matrixPrice.currency - this.conversionRate = matrixPrice.conversionRate - this.item = matrixPrice.item - this.creditAllocation = matrixPrice.creditAllocation - this.discount = matrixPrice.discount - this.minimum = matrixPrice.minimum - this.minimumAmount = matrixPrice.minimumAmount - this.maximum = matrixPrice.maximum - this.maximumAmount = matrixPrice.maximumAmount - this.matrixConfig = matrixPrice.matrixConfig - additionalProperties(matrixPrice.additionalProperties) + metadata = matrixPrice.metadata + id = matrixPrice.id + name = matrixPrice.name + externalPriceId = matrixPrice.externalPriceId + priceType = matrixPrice.priceType + modelType = matrixPrice.modelType + createdAt = matrixPrice.createdAt + cadence = matrixPrice.cadence + billingCycleConfiguration = matrixPrice.billingCycleConfiguration + invoicingCycleConfiguration = matrixPrice.invoicingCycleConfiguration + billableMetric = matrixPrice.billableMetric + fixedPriceQuantity = matrixPrice.fixedPriceQuantity + planPhaseOrder = matrixPrice.planPhaseOrder + currency = matrixPrice.currency + conversionRate = matrixPrice.conversionRate + item = matrixPrice.item + creditAllocation = matrixPrice.creditAllocation + discount = matrixPrice.discount + minimum = matrixPrice.minimum + minimumAmount = matrixPrice.minimumAmount + maximum = matrixPrice.maximum + maximumAmount = matrixPrice.maximumAmount + matrixConfig = matrixPrice.matrixConfig + additionalProperties = matrixPrice.additionalProperties.toMutableMap() } /** @@ -4552,62 +4754,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -4616,8 +4800,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -4625,8 +4807,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -4634,106 +4814,87 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun matrixConfig(matrixConfig: MatrixConfig) = matrixConfig(JsonField.of(matrixConfig)) - @JsonProperty("matrix_config") - @ExcludeMissing fun matrixConfig(matrixConfig: JsonField) = apply { this.matrixConfig = matrixConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixPrice = MatrixPrice( metadata, @@ -4763,16 +4924,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -4781,6 +4943,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -4802,24 +4966,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4827,6 +4988,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -4848,17 +5017,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -4871,6 +5043,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -4894,34 +5068,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4929,6 +5099,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -5093,17 +5271,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -5116,6 +5297,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -5139,34 +5322,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5174,6 +5352,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -5200,17 +5386,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -5223,6 +5412,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -5247,34 +5438,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5282,6 +5469,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -5365,17 +5560,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -5388,6 +5586,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -5411,31 +5611,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5443,6 +5638,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -5469,18 +5672,23 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensions: JsonField>, - private val defaultUnitAmount: JsonField, - private val matrixValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimensions") + @ExcludeMissing + private val dimensions: JsonField> = JsonMissing.of(), + @JsonProperty("default_unit_amount") + @ExcludeMissing + private val defaultUnitAmount: JsonField = JsonMissing.of(), + @JsonProperty("matrix_values") + @ExcludeMissing + private val matrixValues: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** One or two event property values to evaluate matrix groups by */ fun dimensions(): List = dimensions.getRequired("dimensions") @@ -5505,6 +5713,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixConfig = apply { if (!validated) { dimensions() @@ -5530,18 +5740,16 @@ private constructor( @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensions = matrixConfig.dimensions - this.defaultUnitAmount = matrixConfig.defaultUnitAmount - this.matrixValues = matrixConfig.matrixValues - additionalProperties(matrixConfig.additionalProperties) + dimensions = matrixConfig.dimensions + defaultUnitAmount = matrixConfig.defaultUnitAmount + matrixValues = matrixConfig.matrixValues + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ fun dimensions(dimensions: List) = dimensions(JsonField.of(dimensions)) /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") - @ExcludeMissing fun dimensions(dimensions: JsonField>) = apply { this.dimensions = dimensions } @@ -5555,8 +5763,6 @@ private constructor( /** * Default per unit rate for any usage not bucketed into a specified matrix_value */ - @JsonProperty("default_unit_amount") - @ExcludeMissing fun defaultUnitAmount(defaultUnitAmount: JsonField) = apply { this.defaultUnitAmount = defaultUnitAmount } @@ -5566,20 +5772,17 @@ private constructor( matrixValues(JsonField.of(matrixValues)) /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") - @ExcludeMissing fun matrixValues(matrixValues: JsonField>) = apply { this.matrixValues = matrixValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5587,6 +5790,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( dimensions.map { it.toImmutable() }, @@ -5596,17 +5807,20 @@ private constructor( ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("unit_amount") + @ExcludeMissing + private val unitAmount: JsonField = JsonMissing.of(), + @JsonProperty("dimension_values") + @ExcludeMissing + private val dimensionValues: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Unit price for the specified dimension_values */ fun unitAmount(): String = unitAmount.getRequired("unit_amount") @@ -5634,6 +5848,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixValue = apply { if (!validated) { unitAmount() @@ -5657,17 +5873,15 @@ private constructor( @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues + additionalProperties = matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") - @ExcludeMissing fun unitAmount(unitAmount: JsonField) = apply { this.unitAmount = unitAmount } @@ -5685,20 +5899,17 @@ private constructor( * ["region", "tier"] could be used to filter cloud usage by a cloud region and * an instance tier. */ - @JsonProperty("dimension_values") - @ExcludeMissing fun dimensionValues(dimensionValues: JsonField>) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5706,6 +5917,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( unitAmount, @@ -5750,17 +5969,20 @@ private constructor( "MatrixConfig{dimensions=$dimensions, defaultUnitAmount=$defaultUnitAmount, matrixValues=$matrixValues, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -5786,6 +6008,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -5809,9 +6033,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -5819,8 +6043,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -5836,20 +6058,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5857,6 +6076,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -5888,19 +6115,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -5920,17 +6148,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5938,6 +6165,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -5958,17 +6193,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -5994,6 +6232,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -6017,9 +6257,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -6027,8 +6267,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -6044,20 +6282,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6065,6 +6300,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -6217,38 +6460,81 @@ private constructor( "MatrixPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, matrixConfig=$matrixConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TieredPrice.Builder::class) @NoAutoDetect class TieredPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val tieredConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("tiered_config") + @ExcludeMissing + private val tieredConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -6375,6 +6661,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredPrice = apply { if (!validated) { metadata().validate() @@ -6442,30 +6730,30 @@ private constructor( @JvmSynthetic internal fun from(tieredPrice: TieredPrice) = apply { - this.metadata = tieredPrice.metadata - this.id = tieredPrice.id - this.name = tieredPrice.name - this.externalPriceId = tieredPrice.externalPriceId - this.priceType = tieredPrice.priceType - this.modelType = tieredPrice.modelType - this.createdAt = tieredPrice.createdAt - this.cadence = tieredPrice.cadence - this.billingCycleConfiguration = tieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = tieredPrice.invoicingCycleConfiguration - this.billableMetric = tieredPrice.billableMetric - this.fixedPriceQuantity = tieredPrice.fixedPriceQuantity - this.planPhaseOrder = tieredPrice.planPhaseOrder - this.currency = tieredPrice.currency - this.conversionRate = tieredPrice.conversionRate - this.item = tieredPrice.item - this.creditAllocation = tieredPrice.creditAllocation - this.discount = tieredPrice.discount - this.minimum = tieredPrice.minimum - this.minimumAmount = tieredPrice.minimumAmount - this.maximum = tieredPrice.maximum - this.maximumAmount = tieredPrice.maximumAmount - this.tieredConfig = tieredPrice.tieredConfig - additionalProperties(tieredPrice.additionalProperties) + metadata = tieredPrice.metadata + id = tieredPrice.id + name = tieredPrice.name + externalPriceId = tieredPrice.externalPriceId + priceType = tieredPrice.priceType + modelType = tieredPrice.modelType + createdAt = tieredPrice.createdAt + cadence = tieredPrice.cadence + billingCycleConfiguration = tieredPrice.billingCycleConfiguration + invoicingCycleConfiguration = tieredPrice.invoicingCycleConfiguration + billableMetric = tieredPrice.billableMetric + fixedPriceQuantity = tieredPrice.fixedPriceQuantity + planPhaseOrder = tieredPrice.planPhaseOrder + currency = tieredPrice.currency + conversionRate = tieredPrice.conversionRate + item = tieredPrice.item + creditAllocation = tieredPrice.creditAllocation + discount = tieredPrice.discount + minimum = tieredPrice.minimum + minimumAmount = tieredPrice.minimumAmount + maximum = tieredPrice.maximum + maximumAmount = tieredPrice.maximumAmount + tieredConfig = tieredPrice.tieredConfig + additionalProperties = tieredPrice.additionalProperties.toMutableMap() } /** @@ -6480,62 +6768,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -6544,8 +6814,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -6553,8 +6821,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -6562,106 +6828,87 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun tieredConfig(tieredConfig: TieredConfig) = tieredConfig(JsonField.of(tieredConfig)) - @JsonProperty("tiered_config") - @ExcludeMissing fun tieredConfig(tieredConfig: JsonField) = apply { this.tieredConfig = tieredConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPrice = TieredPrice( metadata, @@ -6691,16 +6938,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -6709,6 +6957,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -6730,24 +6980,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6755,6 +7002,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -6776,17 +7031,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -6799,6 +7057,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -6822,34 +7082,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6857,6 +7113,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -7021,17 +7285,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -7044,6 +7311,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -7067,34 +7336,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7102,6 +7366,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -7128,17 +7400,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -7151,6 +7426,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -7175,34 +7452,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7210,6 +7483,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -7293,17 +7574,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -7316,6 +7600,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -7339,31 +7625,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7371,6 +7652,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -7397,17 +7686,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -7433,6 +7725,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -7456,9 +7750,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -7466,8 +7760,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -7483,20 +7775,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7504,6 +7793,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -7535,19 +7832,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -7567,17 +7865,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7585,6 +7882,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -7605,17 +7910,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -7641,6 +7949,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -7664,9 +7974,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -7674,8 +7984,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -7691,20 +7999,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7712,6 +8017,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -7846,16 +8159,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredConfig.Builder::class) @NoAutoDetect class TieredConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") + @ExcludeMissing + private val tiers: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Tiers for rating based on total usage quantities into the specified tier */ fun tiers(): List = tiers.getRequired("tiers") @@ -7866,6 +8180,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredConfig = apply { if (!validated) { tiers().forEach { it.validate() } @@ -7887,26 +8203,23 @@ private constructor( @JvmSynthetic internal fun from(tieredConfig: TieredConfig) = apply { - this.tiers = tieredConfig.tiers - additionalProperties(tieredConfig.additionalProperties) + tiers = tieredConfig.tiers + additionalProperties = tieredConfig.additionalProperties.toMutableMap() } /** Tiers for rating based on total usage quantities into the specified tier */ fun tiers(tiers: List) = tiers(JsonField.of(tiers)) /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") - @ExcludeMissing fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7914,22 +8227,35 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredConfig = TieredConfig(tiers.map { it.toImmutable() }, additionalProperties.toImmutable()) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") + @ExcludeMissing + private val firstUnit: JsonField = JsonMissing.of(), + @JsonProperty("last_unit") + @ExcludeMissing + private val lastUnit: JsonField = JsonMissing.of(), + @JsonProperty("unit_amount") + @ExcludeMissing + private val unitAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Inclusive tier starting value */ fun firstUnit(): Double = firstUnit.getRequired("first_unit") @@ -7953,6 +8279,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Tier = apply { if (!validated) { firstUnit() @@ -7978,18 +8306,16 @@ private constructor( @JvmSynthetic internal fun from(tier: Tier) = apply { - this.firstUnit = tier.firstUnit - this.lastUnit = tier.lastUnit - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + firstUnit = tier.firstUnit + lastUnit = tier.lastUnit + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) /** Inclusive tier starting value */ - @JsonProperty("first_unit") - @ExcludeMissing fun firstUnit(firstUnit: JsonField) = apply { this.firstUnit = firstUnit } @@ -7998,28 +8324,23 @@ private constructor( fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) /** Exclusive tier ending value. If null, this is treated as the last tier */ - @JsonProperty("last_unit") - @ExcludeMissing fun lastUnit(lastUnit: JsonField) = apply { this.lastUnit = lastUnit } /** Amount per unit */ fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing fun unitAmount(unitAmount: JsonField) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8027,6 +8348,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( firstUnit, @@ -8090,38 +8419,81 @@ private constructor( "TieredPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, tieredConfig=$tieredConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TieredBpsPrice.Builder::class) @NoAutoDetect class TieredBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val tieredBpsConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("tiered_bps_config") + @ExcludeMissing + private val tieredBpsConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -8248,6 +8620,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredBpsPrice = apply { if (!validated) { metadata().validate() @@ -8315,30 +8689,30 @@ private constructor( @JvmSynthetic internal fun from(tieredBpsPrice: TieredBpsPrice) = apply { - this.metadata = tieredBpsPrice.metadata - this.id = tieredBpsPrice.id - this.name = tieredBpsPrice.name - this.externalPriceId = tieredBpsPrice.externalPriceId - this.priceType = tieredBpsPrice.priceType - this.modelType = tieredBpsPrice.modelType - this.createdAt = tieredBpsPrice.createdAt - this.cadence = tieredBpsPrice.cadence - this.billingCycleConfiguration = tieredBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = tieredBpsPrice.invoicingCycleConfiguration - this.billableMetric = tieredBpsPrice.billableMetric - this.fixedPriceQuantity = tieredBpsPrice.fixedPriceQuantity - this.planPhaseOrder = tieredBpsPrice.planPhaseOrder - this.currency = tieredBpsPrice.currency - this.conversionRate = tieredBpsPrice.conversionRate - this.item = tieredBpsPrice.item - this.creditAllocation = tieredBpsPrice.creditAllocation - this.discount = tieredBpsPrice.discount - this.minimum = tieredBpsPrice.minimum - this.minimumAmount = tieredBpsPrice.minimumAmount - this.maximum = tieredBpsPrice.maximum - this.maximumAmount = tieredBpsPrice.maximumAmount - this.tieredBpsConfig = tieredBpsPrice.tieredBpsConfig - additionalProperties(tieredBpsPrice.additionalProperties) + metadata = tieredBpsPrice.metadata + id = tieredBpsPrice.id + name = tieredBpsPrice.name + externalPriceId = tieredBpsPrice.externalPriceId + priceType = tieredBpsPrice.priceType + modelType = tieredBpsPrice.modelType + createdAt = tieredBpsPrice.createdAt + cadence = tieredBpsPrice.cadence + billingCycleConfiguration = tieredBpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = tieredBpsPrice.invoicingCycleConfiguration + billableMetric = tieredBpsPrice.billableMetric + fixedPriceQuantity = tieredBpsPrice.fixedPriceQuantity + planPhaseOrder = tieredBpsPrice.planPhaseOrder + currency = tieredBpsPrice.currency + conversionRate = tieredBpsPrice.conversionRate + item = tieredBpsPrice.item + creditAllocation = tieredBpsPrice.creditAllocation + discount = tieredBpsPrice.discount + minimum = tieredBpsPrice.minimum + minimumAmount = tieredBpsPrice.minimumAmount + maximum = tieredBpsPrice.maximum + maximumAmount = tieredBpsPrice.maximumAmount + tieredBpsConfig = tieredBpsPrice.tieredBpsConfig + additionalProperties = tieredBpsPrice.additionalProperties.toMutableMap() } /** @@ -8353,62 +8727,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -8417,8 +8773,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -8426,8 +8780,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -8435,80 +8787,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -8516,26 +8846,29 @@ private constructor( fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = tieredBpsConfig(JsonField.of(tieredBpsConfig)) - @JsonProperty("tiered_bps_config") - @ExcludeMissing fun tieredBpsConfig(tieredBpsConfig: JsonField) = apply { this.tieredBpsConfig = tieredBpsConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredBpsPrice = TieredBpsPrice( metadata, @@ -8565,16 +8898,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -8583,6 +8917,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -8604,24 +8940,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8629,6 +8962,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -8650,17 +8991,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -8673,6 +9017,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -8696,34 +9042,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8731,6 +9073,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -8895,17 +9245,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -8918,6 +9271,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -8941,34 +9296,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8976,6 +9326,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -9002,17 +9360,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -9025,6 +9386,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -9049,34 +9412,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9084,6 +9443,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -9167,17 +9534,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -9190,6 +9560,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -9213,31 +9585,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9245,6 +9612,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -9271,17 +9646,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -9307,6 +9685,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -9330,9 +9710,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -9340,8 +9720,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -9357,20 +9735,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9378,6 +9753,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -9409,19 +9792,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -9441,17 +9825,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9459,6 +9842,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -9479,17 +9870,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -9515,6 +9909,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -9538,9 +9934,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -9548,8 +9944,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -9565,20 +9959,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9586,6 +9977,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -9720,16 +10119,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredBpsConfig.Builder::class) @NoAutoDetect class TieredBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") + @ExcludeMissing + private val tiers: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into specified tiers */ @@ -9744,6 +10144,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredBpsConfig = apply { if (!validated) { tiers().forEach { it.validate() } @@ -9765,8 +10167,8 @@ private constructor( @JvmSynthetic internal fun from(tieredBpsConfig: TieredBpsConfig) = apply { - this.tiers = tieredBpsConfig.tiers - additionalProperties(tieredBpsConfig.additionalProperties) + tiers = tieredBpsConfig.tiers + additionalProperties = tieredBpsConfig.additionalProperties.toMutableMap() } /** @@ -9779,18 +10181,15 @@ private constructor( * Tiers for a Graduated BPS pricing model, where usage is bucketed into specified * tiers */ - @JsonProperty("tiers") - @ExcludeMissing fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9798,6 +10197,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredBpsConfig = TieredBpsConfig( tiers.map { it.toImmutable() }, @@ -9805,19 +10212,26 @@ private constructor( ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("bps") + @ExcludeMissing + private val bps: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_maximum") + @ExcludeMissing + private val perUnitMaximum: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Inclusive tier starting value */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -9850,6 +10264,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Tier = apply { if (!validated) { minimumAmount() @@ -9877,11 +10293,11 @@ private constructor( @JvmSynthetic internal fun from(tier: Tier) = apply { - this.minimumAmount = tier.minimumAmount - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + minimumAmount = tier.minimumAmount + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ @@ -9889,8 +10305,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -9900,8 +10314,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Exclusive tier ending value */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -9910,8 +10322,6 @@ private constructor( fun bps(bps: Double) = bps(JsonField.of(bps)) /** Per-event basis point rate */ - @JsonProperty("bps") - @ExcludeMissing fun bps(bps: JsonField) = apply { this.bps = bps } /** Per unit maximum to charge */ @@ -9919,20 +10329,17 @@ private constructor( perUnitMaximum(JsonField.of(perUnitMaximum)) /** Per unit maximum to charge */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing fun perUnitMaximum(perUnitMaximum: JsonField) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9940,6 +10347,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( minimumAmount, @@ -10004,38 +10419,81 @@ private constructor( "TieredBpsPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, tieredBpsConfig=$tieredBpsConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BpsPrice.Builder::class) @NoAutoDetect class BpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val bpsConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("bps_config") + @ExcludeMissing + private val bpsConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -10162,6 +10620,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BpsPrice = apply { if (!validated) { metadata().validate() @@ -10229,30 +10689,30 @@ private constructor( @JvmSynthetic internal fun from(bpsPrice: BpsPrice) = apply { - this.metadata = bpsPrice.metadata - this.id = bpsPrice.id - this.name = bpsPrice.name - this.externalPriceId = bpsPrice.externalPriceId - this.priceType = bpsPrice.priceType - this.modelType = bpsPrice.modelType - this.createdAt = bpsPrice.createdAt - this.cadence = bpsPrice.cadence - this.billingCycleConfiguration = bpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = bpsPrice.invoicingCycleConfiguration - this.billableMetric = bpsPrice.billableMetric - this.fixedPriceQuantity = bpsPrice.fixedPriceQuantity - this.planPhaseOrder = bpsPrice.planPhaseOrder - this.currency = bpsPrice.currency - this.conversionRate = bpsPrice.conversionRate - this.item = bpsPrice.item - this.creditAllocation = bpsPrice.creditAllocation - this.discount = bpsPrice.discount - this.minimum = bpsPrice.minimum - this.minimumAmount = bpsPrice.minimumAmount - this.maximum = bpsPrice.maximum - this.maximumAmount = bpsPrice.maximumAmount - this.bpsConfig = bpsPrice.bpsConfig - additionalProperties(bpsPrice.additionalProperties) + metadata = bpsPrice.metadata + id = bpsPrice.id + name = bpsPrice.name + externalPriceId = bpsPrice.externalPriceId + priceType = bpsPrice.priceType + modelType = bpsPrice.modelType + createdAt = bpsPrice.createdAt + cadence = bpsPrice.cadence + billingCycleConfiguration = bpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = bpsPrice.invoicingCycleConfiguration + billableMetric = bpsPrice.billableMetric + fixedPriceQuantity = bpsPrice.fixedPriceQuantity + planPhaseOrder = bpsPrice.planPhaseOrder + currency = bpsPrice.currency + conversionRate = bpsPrice.conversionRate + item = bpsPrice.item + creditAllocation = bpsPrice.creditAllocation + discount = bpsPrice.discount + minimum = bpsPrice.minimum + minimumAmount = bpsPrice.minimumAmount + maximum = bpsPrice.maximum + maximumAmount = bpsPrice.maximumAmount + bpsConfig = bpsPrice.bpsConfig + additionalProperties = bpsPrice.additionalProperties.toMutableMap() } /** @@ -10267,62 +10727,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -10331,8 +10773,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -10340,8 +10780,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -10349,104 +10787,85 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun bpsConfig(bpsConfig: BpsConfig) = bpsConfig(JsonField.of(bpsConfig)) - @JsonProperty("bps_config") - @ExcludeMissing fun bpsConfig(bpsConfig: JsonField) = apply { this.bpsConfig = bpsConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BpsPrice = BpsPrice( metadata, @@ -10476,16 +10895,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -10494,6 +10914,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -10515,24 +10937,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10540,6 +10959,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -10561,17 +10988,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -10584,6 +11014,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -10607,34 +11039,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10642,6 +11070,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -10725,17 +11161,20 @@ private constructor( "BillingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BpsConfig.Builder::class) @NoAutoDetect class BpsConfig + @JsonCreator private constructor( - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("bps") + @ExcludeMissing + private val bps: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_maximum") + @ExcludeMissing + private val perUnitMaximum: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Basis point take rate per event */ fun bps(): Double = bps.getRequired("bps") @@ -10753,6 +11192,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BpsConfig = apply { if (!validated) { bps() @@ -10776,17 +11217,15 @@ private constructor( @JvmSynthetic internal fun from(bpsConfig: BpsConfig) = apply { - this.bps = bpsConfig.bps - this.perUnitMaximum = bpsConfig.perUnitMaximum - additionalProperties(bpsConfig.additionalProperties) + bps = bpsConfig.bps + perUnitMaximum = bpsConfig.perUnitMaximum + additionalProperties = bpsConfig.additionalProperties.toMutableMap() } /** Basis point take rate per event */ fun bps(bps: Double) = bps(JsonField.of(bps)) /** Basis point take rate per event */ - @JsonProperty("bps") - @ExcludeMissing fun bps(bps: JsonField) = apply { this.bps = bps } /** Optional currency amount maximum to cap spend per event */ @@ -10794,20 +11233,17 @@ private constructor( perUnitMaximum(JsonField.of(perUnitMaximum)) /** Optional currency amount maximum to cap spend per event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing fun perUnitMaximum(perUnitMaximum: JsonField) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10815,6 +11251,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BpsConfig = BpsConfig( bps, @@ -10922,17 +11366,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -10945,6 +11392,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -10968,34 +11417,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11003,6 +11447,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -11029,17 +11481,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -11052,6 +11507,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -11076,34 +11533,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11111,6 +11564,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -11194,17 +11655,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -11217,6 +11681,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -11240,31 +11706,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11272,6 +11733,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -11298,17 +11767,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -11334,6 +11806,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -11357,9 +11831,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -11367,8 +11841,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -11384,20 +11856,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11405,6 +11874,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -11436,19 +11913,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -11468,17 +11946,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11486,6 +11963,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -11506,17 +11991,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -11542,6 +12030,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -11565,9 +12055,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -11575,8 +12065,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -11592,20 +12080,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11613,6 +12098,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -11765,38 +12258,81 @@ private constructor( "BpsPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, bpsConfig=$bpsConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BulkBpsPrice.Builder::class) @NoAutoDetect class BulkBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val bulkBpsConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("bulk_bps_config") + @ExcludeMissing + private val bulkBpsConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -11923,6 +12459,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BulkBpsPrice = apply { if (!validated) { metadata().validate() @@ -11990,30 +12528,30 @@ private constructor( @JvmSynthetic internal fun from(bulkBpsPrice: BulkBpsPrice) = apply { - this.metadata = bulkBpsPrice.metadata - this.id = bulkBpsPrice.id - this.name = bulkBpsPrice.name - this.externalPriceId = bulkBpsPrice.externalPriceId - this.priceType = bulkBpsPrice.priceType - this.modelType = bulkBpsPrice.modelType - this.createdAt = bulkBpsPrice.createdAt - this.cadence = bulkBpsPrice.cadence - this.billingCycleConfiguration = bulkBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = bulkBpsPrice.invoicingCycleConfiguration - this.billableMetric = bulkBpsPrice.billableMetric - this.fixedPriceQuantity = bulkBpsPrice.fixedPriceQuantity - this.planPhaseOrder = bulkBpsPrice.planPhaseOrder - this.currency = bulkBpsPrice.currency - this.conversionRate = bulkBpsPrice.conversionRate - this.item = bulkBpsPrice.item - this.creditAllocation = bulkBpsPrice.creditAllocation - this.discount = bulkBpsPrice.discount - this.minimum = bulkBpsPrice.minimum - this.minimumAmount = bulkBpsPrice.minimumAmount - this.maximum = bulkBpsPrice.maximum - this.maximumAmount = bulkBpsPrice.maximumAmount - this.bulkBpsConfig = bulkBpsPrice.bulkBpsConfig - additionalProperties(bulkBpsPrice.additionalProperties) + metadata = bulkBpsPrice.metadata + id = bulkBpsPrice.id + name = bulkBpsPrice.name + externalPriceId = bulkBpsPrice.externalPriceId + priceType = bulkBpsPrice.priceType + modelType = bulkBpsPrice.modelType + createdAt = bulkBpsPrice.createdAt + cadence = bulkBpsPrice.cadence + billingCycleConfiguration = bulkBpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = bulkBpsPrice.invoicingCycleConfiguration + billableMetric = bulkBpsPrice.billableMetric + fixedPriceQuantity = bulkBpsPrice.fixedPriceQuantity + planPhaseOrder = bulkBpsPrice.planPhaseOrder + currency = bulkBpsPrice.currency + conversionRate = bulkBpsPrice.conversionRate + item = bulkBpsPrice.item + creditAllocation = bulkBpsPrice.creditAllocation + discount = bulkBpsPrice.discount + minimum = bulkBpsPrice.minimum + minimumAmount = bulkBpsPrice.minimumAmount + maximum = bulkBpsPrice.maximum + maximumAmount = bulkBpsPrice.maximumAmount + bulkBpsConfig = bulkBpsPrice.bulkBpsConfig + additionalProperties = bulkBpsPrice.additionalProperties.toMutableMap() } /** @@ -12028,62 +12566,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -12092,8 +12612,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -12101,8 +12619,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -12110,80 +12626,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -12191,26 +12685,29 @@ private constructor( fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = bulkBpsConfig(JsonField.of(bulkBpsConfig)) - @JsonProperty("bulk_bps_config") - @ExcludeMissing fun bulkBpsConfig(bulkBpsConfig: JsonField) = apply { this.bulkBpsConfig = bulkBpsConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkBpsPrice = BulkBpsPrice( metadata, @@ -12240,16 +12737,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -12258,6 +12756,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -12279,24 +12779,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12304,6 +12801,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -12325,17 +12830,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -12348,6 +12856,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -12371,34 +12881,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12406,6 +12912,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -12489,16 +13003,17 @@ private constructor( "BillingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BulkBpsConfig.Builder::class) @NoAutoDetect class BulkBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") + @ExcludeMissing + private val tiers: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single tier * based on total volume @@ -12515,6 +13030,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BulkBpsConfig = apply { if (!validated) { tiers().forEach { it.validate() } @@ -12536,8 +13053,8 @@ private constructor( @JvmSynthetic internal fun from(bulkBpsConfig: BulkBpsConfig) = apply { - this.tiers = bulkBpsConfig.tiers - additionalProperties(bulkBpsConfig.additionalProperties) + tiers = bulkBpsConfig.tiers + additionalProperties = bulkBpsConfig.additionalProperties.toMutableMap() } /** @@ -12550,18 +13067,15 @@ private constructor( * Tiers for a bulk BPS pricing model where all usage is aggregated to a single tier * based on total volume */ - @JsonProperty("tiers") - @ExcludeMissing fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12569,6 +13083,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkBpsConfig = BulkBpsConfig( tiers.map { it.toImmutable() }, @@ -12576,18 +13098,23 @@ private constructor( ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("bps") + @ExcludeMissing + private val bps: JsonField = JsonMissing.of(), + @JsonProperty("per_unit_maximum") + @ExcludeMissing + private val perUnitMaximum: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Upper bound for tier */ fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) @@ -12614,6 +13141,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Tier = apply { if (!validated) { maximumAmount() @@ -12639,10 +13168,10 @@ private constructor( @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for tier */ @@ -12650,8 +13179,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Upper bound for tier */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -12660,8 +13187,6 @@ private constructor( fun bps(bps: Double) = bps(JsonField.of(bps)) /** Basis points to rate on */ - @JsonProperty("bps") - @ExcludeMissing fun bps(bps: JsonField) = apply { this.bps = bps } /** The maximum amount to charge for any one event */ @@ -12669,20 +13194,17 @@ private constructor( perUnitMaximum(JsonField.of(perUnitMaximum)) /** The maximum amount to charge for any one event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing fun perUnitMaximum(perUnitMaximum: JsonField) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12690,6 +13212,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumAmount, @@ -12816,17 +13346,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -12839,6 +13372,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -12862,34 +13397,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12897,6 +13427,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -12923,17 +13461,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -12946,6 +13487,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -12970,34 +13513,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13005,6 +13544,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -13088,17 +13635,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -13111,6 +13661,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -13134,31 +13686,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13166,6 +13713,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -13192,17 +13747,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -13228,6 +13786,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -13251,9 +13811,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -13261,8 +13821,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -13278,20 +13836,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13299,6 +13854,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -13330,19 +13893,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -13362,17 +13926,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13380,6 +13943,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -13400,17 +13971,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -13436,6 +14010,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -13459,9 +14035,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -13469,8 +14045,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -13486,20 +14060,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13507,6 +14078,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -13659,38 +14238,81 @@ private constructor( "BulkBpsPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, bulkBpsConfig=$bulkBpsConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BulkPrice.Builder::class) @NoAutoDetect class BulkPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val bulkConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("bulk_config") + @ExcludeMissing + private val bulkConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -13817,6 +14439,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BulkPrice = apply { if (!validated) { metadata().validate() @@ -13884,30 +14508,30 @@ private constructor( @JvmSynthetic internal fun from(bulkPrice: BulkPrice) = apply { - this.metadata = bulkPrice.metadata - this.id = bulkPrice.id - this.name = bulkPrice.name - this.externalPriceId = bulkPrice.externalPriceId - this.priceType = bulkPrice.priceType - this.modelType = bulkPrice.modelType - this.createdAt = bulkPrice.createdAt - this.cadence = bulkPrice.cadence - this.billingCycleConfiguration = bulkPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = bulkPrice.invoicingCycleConfiguration - this.billableMetric = bulkPrice.billableMetric - this.fixedPriceQuantity = bulkPrice.fixedPriceQuantity - this.planPhaseOrder = bulkPrice.planPhaseOrder - this.currency = bulkPrice.currency - this.conversionRate = bulkPrice.conversionRate - this.item = bulkPrice.item - this.creditAllocation = bulkPrice.creditAllocation - this.discount = bulkPrice.discount - this.minimum = bulkPrice.minimum - this.minimumAmount = bulkPrice.minimumAmount - this.maximum = bulkPrice.maximum - this.maximumAmount = bulkPrice.maximumAmount - this.bulkConfig = bulkPrice.bulkConfig - additionalProperties(bulkPrice.additionalProperties) + metadata = bulkPrice.metadata + id = bulkPrice.id + name = bulkPrice.name + externalPriceId = bulkPrice.externalPriceId + priceType = bulkPrice.priceType + modelType = bulkPrice.modelType + createdAt = bulkPrice.createdAt + cadence = bulkPrice.cadence + billingCycleConfiguration = bulkPrice.billingCycleConfiguration + invoicingCycleConfiguration = bulkPrice.invoicingCycleConfiguration + billableMetric = bulkPrice.billableMetric + fixedPriceQuantity = bulkPrice.fixedPriceQuantity + planPhaseOrder = bulkPrice.planPhaseOrder + currency = bulkPrice.currency + conversionRate = bulkPrice.conversionRate + item = bulkPrice.item + creditAllocation = bulkPrice.creditAllocation + discount = bulkPrice.discount + minimum = bulkPrice.minimum + minimumAmount = bulkPrice.minimumAmount + maximum = bulkPrice.maximum + maximumAmount = bulkPrice.maximumAmount + bulkConfig = bulkPrice.bulkConfig + additionalProperties = bulkPrice.additionalProperties.toMutableMap() } /** @@ -13922,62 +14546,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -13986,8 +14592,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -13995,8 +14599,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -14004,106 +14606,87 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun bulkConfig(bulkConfig: BulkConfig) = bulkConfig(JsonField.of(bulkConfig)) - @JsonProperty("bulk_config") - @ExcludeMissing fun bulkConfig(bulkConfig: JsonField) = apply { this.bulkConfig = bulkConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkPrice = BulkPrice( metadata, @@ -14133,16 +14716,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -14151,6 +14735,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -14172,24 +14758,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14197,6 +14780,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -14218,17 +14809,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -14241,6 +14835,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -14264,34 +14860,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14299,6 +14891,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -14382,16 +14982,17 @@ private constructor( "BillingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BulkConfig.Builder::class) @NoAutoDetect class BulkConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") + @ExcludeMissing + private val tiers: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Bulk tiers for rating based on total usage volume */ fun tiers(): List = tiers.getRequired("tiers") @@ -14402,6 +15003,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BulkConfig = apply { if (!validated) { tiers().forEach { it.validate() } @@ -14423,26 +15026,23 @@ private constructor( @JvmSynthetic internal fun from(bulkConfig: BulkConfig) = apply { - this.tiers = bulkConfig.tiers - additionalProperties(bulkConfig.additionalProperties) + tiers = bulkConfig.tiers + additionalProperties = bulkConfig.additionalProperties.toMutableMap() } /** Bulk tiers for rating based on total usage volume */ fun tiers(tiers: List) = tiers(JsonField.of(tiers)) /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") - @ExcludeMissing fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14450,21 +15050,32 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkConfig = BulkConfig(tiers.map { it.toImmutable() }, additionalProperties.toImmutable()) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumUnits: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_units") + @ExcludeMissing + private val maximumUnits: JsonField = JsonMissing.of(), + @JsonProperty("unit_amount") + @ExcludeMissing + private val unitAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Upper bound for this tier */ fun maximumUnits(): Optional = Optional.ofNullable(maximumUnits.getNullable("maximum_units")) @@ -14482,6 +15093,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Tier = apply { if (!validated) { maximumUnits() @@ -14505,9 +15118,9 @@ private constructor( @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumUnits = tier.maximumUnits - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + maximumUnits = tier.maximumUnits + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for this tier */ @@ -14515,8 +15128,6 @@ private constructor( maximumUnits(JsonField.of(maximumUnits)) /** Upper bound for this tier */ - @JsonProperty("maximum_units") - @ExcludeMissing fun maximumUnits(maximumUnits: JsonField) = apply { this.maximumUnits = maximumUnits } @@ -14525,20 +15136,17 @@ private constructor( fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing fun unitAmount(unitAmount: JsonField) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14546,6 +15154,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumUnits, @@ -14671,17 +15287,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -14694,6 +15313,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -14717,34 +15338,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14752,6 +15368,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -14778,17 +15402,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -14801,6 +15428,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -14825,34 +15454,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14860,6 +15485,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -14943,17 +15576,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -14966,6 +15602,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -14989,31 +15627,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15021,6 +15654,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -15047,17 +15688,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -15083,6 +15727,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -15106,9 +15752,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -15116,8 +15762,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -15133,20 +15777,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15154,6 +15795,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -15185,19 +15834,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -15217,17 +15867,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15235,6 +15884,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -15255,17 +15912,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -15291,6 +15951,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -15314,9 +15976,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -15324,8 +15986,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -15341,20 +16001,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15362,6 +16019,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -15514,38 +16179,82 @@ private constructor( "BulkPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, bulkConfig=$bulkConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ThresholdTotalAmountPrice.Builder::class) @NoAutoDetect class ThresholdTotalAmountPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val thresholdTotalAmountConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("threshold_total_amount_config") + @ExcludeMissing + private val thresholdTotalAmountConfig: JsonField = + JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -15675,6 +16384,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ThresholdTotalAmountPrice = apply { if (!validated) { metadata().validate() @@ -15743,32 +16454,30 @@ private constructor( @JvmSynthetic internal fun from(thresholdTotalAmountPrice: ThresholdTotalAmountPrice) = apply { - this.metadata = thresholdTotalAmountPrice.metadata - this.id = thresholdTotalAmountPrice.id - this.name = thresholdTotalAmountPrice.name - this.externalPriceId = thresholdTotalAmountPrice.externalPriceId - this.priceType = thresholdTotalAmountPrice.priceType - this.modelType = thresholdTotalAmountPrice.modelType - this.createdAt = thresholdTotalAmountPrice.createdAt - this.cadence = thresholdTotalAmountPrice.cadence - this.billingCycleConfiguration = thresholdTotalAmountPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - thresholdTotalAmountPrice.invoicingCycleConfiguration - this.billableMetric = thresholdTotalAmountPrice.billableMetric - this.fixedPriceQuantity = thresholdTotalAmountPrice.fixedPriceQuantity - this.planPhaseOrder = thresholdTotalAmountPrice.planPhaseOrder - this.currency = thresholdTotalAmountPrice.currency - this.conversionRate = thresholdTotalAmountPrice.conversionRate - this.item = thresholdTotalAmountPrice.item - this.creditAllocation = thresholdTotalAmountPrice.creditAllocation - this.discount = thresholdTotalAmountPrice.discount - this.minimum = thresholdTotalAmountPrice.minimum - this.minimumAmount = thresholdTotalAmountPrice.minimumAmount - this.maximum = thresholdTotalAmountPrice.maximum - this.maximumAmount = thresholdTotalAmountPrice.maximumAmount - this.thresholdTotalAmountConfig = - thresholdTotalAmountPrice.thresholdTotalAmountConfig - additionalProperties(thresholdTotalAmountPrice.additionalProperties) + metadata = thresholdTotalAmountPrice.metadata + id = thresholdTotalAmountPrice.id + name = thresholdTotalAmountPrice.name + externalPriceId = thresholdTotalAmountPrice.externalPriceId + priceType = thresholdTotalAmountPrice.priceType + modelType = thresholdTotalAmountPrice.modelType + createdAt = thresholdTotalAmountPrice.createdAt + cadence = thresholdTotalAmountPrice.cadence + billingCycleConfiguration = thresholdTotalAmountPrice.billingCycleConfiguration + invoicingCycleConfiguration = thresholdTotalAmountPrice.invoicingCycleConfiguration + billableMetric = thresholdTotalAmountPrice.billableMetric + fixedPriceQuantity = thresholdTotalAmountPrice.fixedPriceQuantity + planPhaseOrder = thresholdTotalAmountPrice.planPhaseOrder + currency = thresholdTotalAmountPrice.currency + conversionRate = thresholdTotalAmountPrice.conversionRate + item = thresholdTotalAmountPrice.item + creditAllocation = thresholdTotalAmountPrice.creditAllocation + discount = thresholdTotalAmountPrice.discount + minimum = thresholdTotalAmountPrice.minimum + minimumAmount = thresholdTotalAmountPrice.minimumAmount + maximum = thresholdTotalAmountPrice.maximum + maximumAmount = thresholdTotalAmountPrice.maximumAmount + thresholdTotalAmountConfig = thresholdTotalAmountPrice.thresholdTotalAmountConfig + additionalProperties = thresholdTotalAmountPrice.additionalProperties.toMutableMap() } /** @@ -15783,62 +16492,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -15847,8 +16538,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -15856,8 +16545,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -15865,80 +16552,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -15946,26 +16611,29 @@ private constructor( fun thresholdTotalAmountConfig(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = thresholdTotalAmountConfig(JsonField.of(thresholdTotalAmountConfig)) - @JsonProperty("threshold_total_amount_config") - @ExcludeMissing fun thresholdTotalAmountConfig( thresholdTotalAmountConfig: JsonField ) = apply { this.thresholdTotalAmountConfig = thresholdTotalAmountConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ThresholdTotalAmountPrice = ThresholdTotalAmountPrice( metadata, @@ -15995,16 +16663,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -16013,6 +16682,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -16034,24 +16705,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16059,6 +16727,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -16080,17 +16756,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -16103,6 +16782,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -16126,34 +16807,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16161,6 +16838,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -16325,17 +17010,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -16348,6 +17036,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -16371,34 +17061,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16406,6 +17091,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -16432,17 +17125,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -16455,6 +17151,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -16479,34 +17177,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16514,6 +17208,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -16597,17 +17299,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -16620,6 +17325,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -16643,31 +17350,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16675,6 +17377,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -16701,17 +17411,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -16737,6 +17450,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -16760,9 +17475,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -16770,8 +17485,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -16787,20 +17500,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16808,6 +17518,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -16839,19 +17557,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -16871,17 +17590,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16889,6 +17607,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -16909,17 +17635,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -16945,6 +17674,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -16968,9 +17699,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -16978,8 +17709,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -16995,20 +17724,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17016,6 +17742,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -17150,19 +17884,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ThresholdTotalAmountConfig.Builder::class) @NoAutoDetect class ThresholdTotalAmountConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): ThresholdTotalAmountConfig = apply { if (!validated) { validated = true @@ -17182,17 +17917,17 @@ private constructor( @JvmSynthetic internal fun from(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = apply { - additionalProperties(thresholdTotalAmountConfig.additionalProperties) + additionalProperties = + thresholdTotalAmountConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17200,6 +17935,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ThresholdTotalAmountConfig = ThresholdTotalAmountConfig(additionalProperties.toImmutable()) } @@ -17240,38 +17983,81 @@ private constructor( "ThresholdTotalAmountPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, thresholdTotalAmountConfig=$thresholdTotalAmountConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TieredPackagePrice.Builder::class) @NoAutoDetect class TieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val tieredPackageConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("tiered_package_config") + @ExcludeMissing + private val tieredPackageConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -17401,6 +18187,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredPackagePrice = apply { if (!validated) { metadata().validate() @@ -17468,30 +18256,30 @@ private constructor( @JvmSynthetic internal fun from(tieredPackagePrice: TieredPackagePrice) = apply { - this.metadata = tieredPackagePrice.metadata - this.id = tieredPackagePrice.id - this.name = tieredPackagePrice.name - this.externalPriceId = tieredPackagePrice.externalPriceId - this.priceType = tieredPackagePrice.priceType - this.modelType = tieredPackagePrice.modelType - this.createdAt = tieredPackagePrice.createdAt - this.cadence = tieredPackagePrice.cadence - this.billingCycleConfiguration = tieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = tieredPackagePrice.invoicingCycleConfiguration - this.billableMetric = tieredPackagePrice.billableMetric - this.fixedPriceQuantity = tieredPackagePrice.fixedPriceQuantity - this.planPhaseOrder = tieredPackagePrice.planPhaseOrder - this.currency = tieredPackagePrice.currency - this.conversionRate = tieredPackagePrice.conversionRate - this.item = tieredPackagePrice.item - this.creditAllocation = tieredPackagePrice.creditAllocation - this.discount = tieredPackagePrice.discount - this.minimum = tieredPackagePrice.minimum - this.minimumAmount = tieredPackagePrice.minimumAmount - this.maximum = tieredPackagePrice.maximum - this.maximumAmount = tieredPackagePrice.maximumAmount - this.tieredPackageConfig = tieredPackagePrice.tieredPackageConfig - additionalProperties(tieredPackagePrice.additionalProperties) + metadata = tieredPackagePrice.metadata + id = tieredPackagePrice.id + name = tieredPackagePrice.name + externalPriceId = tieredPackagePrice.externalPriceId + priceType = tieredPackagePrice.priceType + modelType = tieredPackagePrice.modelType + createdAt = tieredPackagePrice.createdAt + cadence = tieredPackagePrice.cadence + billingCycleConfiguration = tieredPackagePrice.billingCycleConfiguration + invoicingCycleConfiguration = tieredPackagePrice.invoicingCycleConfiguration + billableMetric = tieredPackagePrice.billableMetric + fixedPriceQuantity = tieredPackagePrice.fixedPriceQuantity + planPhaseOrder = tieredPackagePrice.planPhaseOrder + currency = tieredPackagePrice.currency + conversionRate = tieredPackagePrice.conversionRate + item = tieredPackagePrice.item + creditAllocation = tieredPackagePrice.creditAllocation + discount = tieredPackagePrice.discount + minimum = tieredPackagePrice.minimum + minimumAmount = tieredPackagePrice.minimumAmount + maximum = tieredPackagePrice.maximum + maximumAmount = tieredPackagePrice.maximumAmount + tieredPackageConfig = tieredPackagePrice.tieredPackageConfig + additionalProperties = tieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -17506,62 +18294,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -17570,8 +18340,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -17579,8 +18347,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -17588,80 +18354,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -17669,26 +18413,29 @@ private constructor( fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = tieredPackageConfig(JsonField.of(tieredPackageConfig)) - @JsonProperty("tiered_package_config") - @ExcludeMissing fun tieredPackageConfig(tieredPackageConfig: JsonField) = apply { this.tieredPackageConfig = tieredPackageConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackagePrice = TieredPackagePrice( metadata, @@ -17718,16 +18465,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -17736,6 +18484,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -17757,24 +18507,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17782,6 +18529,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -17803,17 +18558,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -17826,6 +18584,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -17849,34 +18609,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17884,6 +18640,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -18048,17 +18812,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -18071,6 +18838,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -18094,34 +18863,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18129,6 +18893,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -18155,17 +18927,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -18178,6 +18953,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -18202,34 +18979,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18237,6 +19010,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -18320,17 +19101,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -18343,6 +19127,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -18366,31 +19152,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18398,6 +19179,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -18424,17 +19213,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -18460,6 +19252,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -18483,9 +19277,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -18493,8 +19287,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -18510,20 +19302,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18531,6 +19320,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -18562,19 +19359,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -18594,17 +19392,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18612,6 +19409,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -18632,17 +19437,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -18668,6 +19476,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -18691,9 +19501,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -18701,8 +19511,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -18718,20 +19526,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18739,6 +19544,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -18873,19 +19686,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageConfig.Builder::class) @NoAutoDetect class TieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredPackageConfig = apply { if (!validated) { validated = true @@ -18905,17 +19719,16 @@ private constructor( @JvmSynthetic internal fun from(tieredPackageConfig: TieredPackageConfig) = apply { - additionalProperties(tieredPackageConfig.additionalProperties) + additionalProperties = tieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18923,6 +19736,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageConfig = TieredPackageConfig(additionalProperties.toImmutable()) } @@ -18963,38 +19784,81 @@ private constructor( "TieredPackagePrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, tieredPackageConfig=$tieredPackageConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedTieredPrice.Builder::class) @NoAutoDetect class GroupedTieredPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val groupedTieredConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("grouped_tiered_config") + @ExcludeMissing + private val groupedTieredConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -19124,6 +19988,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedTieredPrice = apply { if (!validated) { metadata().validate() @@ -19191,30 +20057,30 @@ private constructor( @JvmSynthetic internal fun from(groupedTieredPrice: GroupedTieredPrice) = apply { - this.metadata = groupedTieredPrice.metadata - this.id = groupedTieredPrice.id - this.name = groupedTieredPrice.name - this.externalPriceId = groupedTieredPrice.externalPriceId - this.priceType = groupedTieredPrice.priceType - this.modelType = groupedTieredPrice.modelType - this.createdAt = groupedTieredPrice.createdAt - this.cadence = groupedTieredPrice.cadence - this.billingCycleConfiguration = groupedTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = groupedTieredPrice.invoicingCycleConfiguration - this.billableMetric = groupedTieredPrice.billableMetric - this.fixedPriceQuantity = groupedTieredPrice.fixedPriceQuantity - this.planPhaseOrder = groupedTieredPrice.planPhaseOrder - this.currency = groupedTieredPrice.currency - this.conversionRate = groupedTieredPrice.conversionRate - this.item = groupedTieredPrice.item - this.creditAllocation = groupedTieredPrice.creditAllocation - this.discount = groupedTieredPrice.discount - this.minimum = groupedTieredPrice.minimum - this.minimumAmount = groupedTieredPrice.minimumAmount - this.maximum = groupedTieredPrice.maximum - this.maximumAmount = groupedTieredPrice.maximumAmount - this.groupedTieredConfig = groupedTieredPrice.groupedTieredConfig - additionalProperties(groupedTieredPrice.additionalProperties) + metadata = groupedTieredPrice.metadata + id = groupedTieredPrice.id + name = groupedTieredPrice.name + externalPriceId = groupedTieredPrice.externalPriceId + priceType = groupedTieredPrice.priceType + modelType = groupedTieredPrice.modelType + createdAt = groupedTieredPrice.createdAt + cadence = groupedTieredPrice.cadence + billingCycleConfiguration = groupedTieredPrice.billingCycleConfiguration + invoicingCycleConfiguration = groupedTieredPrice.invoicingCycleConfiguration + billableMetric = groupedTieredPrice.billableMetric + fixedPriceQuantity = groupedTieredPrice.fixedPriceQuantity + planPhaseOrder = groupedTieredPrice.planPhaseOrder + currency = groupedTieredPrice.currency + conversionRate = groupedTieredPrice.conversionRate + item = groupedTieredPrice.item + creditAllocation = groupedTieredPrice.creditAllocation + discount = groupedTieredPrice.discount + minimum = groupedTieredPrice.minimum + minimumAmount = groupedTieredPrice.minimumAmount + maximum = groupedTieredPrice.maximum + maximumAmount = groupedTieredPrice.maximumAmount + groupedTieredConfig = groupedTieredPrice.groupedTieredConfig + additionalProperties = groupedTieredPrice.additionalProperties.toMutableMap() } /** @@ -19229,62 +20095,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -19293,8 +20141,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -19302,8 +20148,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -19311,80 +20155,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -19392,26 +20214,29 @@ private constructor( fun groupedTieredConfig(groupedTieredConfig: GroupedTieredConfig) = groupedTieredConfig(JsonField.of(groupedTieredConfig)) - @JsonProperty("grouped_tiered_config") - @ExcludeMissing fun groupedTieredConfig(groupedTieredConfig: JsonField) = apply { this.groupedTieredConfig = groupedTieredConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedTieredPrice = GroupedTieredPrice( metadata, @@ -19441,16 +20266,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -19459,6 +20285,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -19480,24 +20308,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19505,6 +20330,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -19526,17 +20359,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -19549,6 +20385,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -19572,34 +20410,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19607,6 +20441,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -19771,17 +20613,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -19794,6 +20639,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -19817,34 +20664,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19852,6 +20694,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -19878,19 +20728,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedTieredConfig.Builder::class) @NoAutoDetect class GroupedTieredConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedTieredConfig = apply { if (!validated) { validated = true @@ -19910,17 +20761,16 @@ private constructor( @JvmSynthetic internal fun from(groupedTieredConfig: GroupedTieredConfig) = apply { - additionalProperties(groupedTieredConfig.additionalProperties) + additionalProperties = groupedTieredConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19928,6 +20778,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedTieredConfig = GroupedTieredConfig(additionalProperties.toImmutable()) } @@ -19950,17 +20808,20 @@ private constructor( "GroupedTieredConfig{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -19973,6 +20834,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -19997,34 +20860,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20032,6 +20891,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -20115,17 +20982,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -20138,6 +21008,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -20161,31 +21033,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20193,6 +21060,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -20219,17 +21094,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -20255,6 +21133,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -20278,9 +21158,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -20288,8 +21168,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -20305,20 +21183,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20326,6 +21201,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -20357,19 +21240,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -20389,17 +21273,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20407,6 +21290,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -20427,17 +21318,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -20463,6 +21357,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -20486,9 +21382,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -20496,8 +21392,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -20513,20 +21407,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20534,6 +21425,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -20686,38 +21585,81 @@ private constructor( "GroupedTieredPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, groupedTieredConfig=$groupedTieredConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TieredWithMinimumPrice.Builder::class) @NoAutoDetect class TieredWithMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val tieredWithMinimumConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("tiered_with_minimum_config") + @ExcludeMissing + private val tieredWithMinimumConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -20847,6 +21789,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredWithMinimumPrice = apply { if (!validated) { metadata().validate() @@ -20915,31 +21859,30 @@ private constructor( @JvmSynthetic internal fun from(tieredWithMinimumPrice: TieredWithMinimumPrice) = apply { - this.metadata = tieredWithMinimumPrice.metadata - this.id = tieredWithMinimumPrice.id - this.name = tieredWithMinimumPrice.name - this.externalPriceId = tieredWithMinimumPrice.externalPriceId - this.priceType = tieredWithMinimumPrice.priceType - this.modelType = tieredWithMinimumPrice.modelType - this.createdAt = tieredWithMinimumPrice.createdAt - this.cadence = tieredWithMinimumPrice.cadence - this.billingCycleConfiguration = tieredWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - tieredWithMinimumPrice.invoicingCycleConfiguration - this.billableMetric = tieredWithMinimumPrice.billableMetric - this.fixedPriceQuantity = tieredWithMinimumPrice.fixedPriceQuantity - this.planPhaseOrder = tieredWithMinimumPrice.planPhaseOrder - this.currency = tieredWithMinimumPrice.currency - this.conversionRate = tieredWithMinimumPrice.conversionRate - this.item = tieredWithMinimumPrice.item - this.creditAllocation = tieredWithMinimumPrice.creditAllocation - this.discount = tieredWithMinimumPrice.discount - this.minimum = tieredWithMinimumPrice.minimum - this.minimumAmount = tieredWithMinimumPrice.minimumAmount - this.maximum = tieredWithMinimumPrice.maximum - this.maximumAmount = tieredWithMinimumPrice.maximumAmount - this.tieredWithMinimumConfig = tieredWithMinimumPrice.tieredWithMinimumConfig - additionalProperties(tieredWithMinimumPrice.additionalProperties) + metadata = tieredWithMinimumPrice.metadata + id = tieredWithMinimumPrice.id + name = tieredWithMinimumPrice.name + externalPriceId = tieredWithMinimumPrice.externalPriceId + priceType = tieredWithMinimumPrice.priceType + modelType = tieredWithMinimumPrice.modelType + createdAt = tieredWithMinimumPrice.createdAt + cadence = tieredWithMinimumPrice.cadence + billingCycleConfiguration = tieredWithMinimumPrice.billingCycleConfiguration + invoicingCycleConfiguration = tieredWithMinimumPrice.invoicingCycleConfiguration + billableMetric = tieredWithMinimumPrice.billableMetric + fixedPriceQuantity = tieredWithMinimumPrice.fixedPriceQuantity + planPhaseOrder = tieredWithMinimumPrice.planPhaseOrder + currency = tieredWithMinimumPrice.currency + conversionRate = tieredWithMinimumPrice.conversionRate + item = tieredWithMinimumPrice.item + creditAllocation = tieredWithMinimumPrice.creditAllocation + discount = tieredWithMinimumPrice.discount + minimum = tieredWithMinimumPrice.minimum + minimumAmount = tieredWithMinimumPrice.minimumAmount + maximum = tieredWithMinimumPrice.maximum + maximumAmount = tieredWithMinimumPrice.maximumAmount + tieredWithMinimumConfig = tieredWithMinimumPrice.tieredWithMinimumConfig + additionalProperties = tieredWithMinimumPrice.additionalProperties.toMutableMap() } /** @@ -20954,62 +21897,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -21018,8 +21943,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -21027,8 +21950,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -21036,80 +21957,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -21117,26 +22016,29 @@ private constructor( fun tieredWithMinimumConfig(tieredWithMinimumConfig: TieredWithMinimumConfig) = tieredWithMinimumConfig(JsonField.of(tieredWithMinimumConfig)) - @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing fun tieredWithMinimumConfig( tieredWithMinimumConfig: JsonField ) = apply { this.tieredWithMinimumConfig = tieredWithMinimumConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithMinimumPrice = TieredWithMinimumPrice( metadata, @@ -21166,16 +22068,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -21184,6 +22087,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -21205,24 +22110,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21230,6 +22132,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -21251,17 +22161,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -21274,6 +22187,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -21297,34 +22212,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21332,6 +22243,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -21496,17 +22415,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -21519,6 +22441,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -21542,34 +22466,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21577,6 +22496,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -21603,17 +22530,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -21626,6 +22556,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -21650,34 +22582,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21685,6 +22613,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -21768,17 +22704,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -21791,6 +22730,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -21814,31 +22755,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21846,6 +22782,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -21872,17 +22816,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -21908,6 +22855,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -21931,9 +22880,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -21941,8 +22890,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -21958,20 +22905,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21979,6 +22923,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -22010,19 +22962,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -22042,17 +22995,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22060,6 +23012,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -22080,17 +23040,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -22116,6 +23079,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -22139,9 +23104,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -22149,8 +23114,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -22166,20 +23129,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22187,6 +23147,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -22321,19 +23289,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithMinimumConfig.Builder::class) @NoAutoDetect class TieredWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredWithMinimumConfig = apply { if (!validated) { validated = true @@ -22353,17 +23322,17 @@ private constructor( @JvmSynthetic internal fun from(tieredWithMinimumConfig: TieredWithMinimumConfig) = apply { - additionalProperties(tieredWithMinimumConfig.additionalProperties) + additionalProperties = + tieredWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22371,6 +23340,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithMinimumConfig = TieredWithMinimumConfig(additionalProperties.toImmutable()) } @@ -22411,38 +23388,82 @@ private constructor( "TieredWithMinimumPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, tieredWithMinimumConfig=$tieredWithMinimumConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TieredPackageWithMinimumPrice.Builder::class) @NoAutoDetect class TieredPackageWithMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val tieredPackageWithMinimumConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("tiered_package_with_minimum_config") + @ExcludeMissing + private val tieredPackageWithMinimumConfig: JsonField = + JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -22572,6 +23593,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredPackageWithMinimumPrice = apply { if (!validated) { metadata().validate() @@ -22641,33 +23664,34 @@ private constructor( @JvmSynthetic internal fun from(tieredPackageWithMinimumPrice: TieredPackageWithMinimumPrice) = apply { - this.metadata = tieredPackageWithMinimumPrice.metadata - this.id = tieredPackageWithMinimumPrice.id - this.name = tieredPackageWithMinimumPrice.name - this.externalPriceId = tieredPackageWithMinimumPrice.externalPriceId - this.priceType = tieredPackageWithMinimumPrice.priceType - this.modelType = tieredPackageWithMinimumPrice.modelType - this.createdAt = tieredPackageWithMinimumPrice.createdAt - this.cadence = tieredPackageWithMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = tieredPackageWithMinimumPrice.metadata + id = tieredPackageWithMinimumPrice.id + name = tieredPackageWithMinimumPrice.name + externalPriceId = tieredPackageWithMinimumPrice.externalPriceId + priceType = tieredPackageWithMinimumPrice.priceType + modelType = tieredPackageWithMinimumPrice.modelType + createdAt = tieredPackageWithMinimumPrice.createdAt + cadence = tieredPackageWithMinimumPrice.cadence + billingCycleConfiguration = tieredPackageWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = tieredPackageWithMinimumPrice.invoicingCycleConfiguration - this.billableMetric = tieredPackageWithMinimumPrice.billableMetric - this.fixedPriceQuantity = tieredPackageWithMinimumPrice.fixedPriceQuantity - this.planPhaseOrder = tieredPackageWithMinimumPrice.planPhaseOrder - this.currency = tieredPackageWithMinimumPrice.currency - this.conversionRate = tieredPackageWithMinimumPrice.conversionRate - this.item = tieredPackageWithMinimumPrice.item - this.creditAllocation = tieredPackageWithMinimumPrice.creditAllocation - this.discount = tieredPackageWithMinimumPrice.discount - this.minimum = tieredPackageWithMinimumPrice.minimum - this.minimumAmount = tieredPackageWithMinimumPrice.minimumAmount - this.maximum = tieredPackageWithMinimumPrice.maximum - this.maximumAmount = tieredPackageWithMinimumPrice.maximumAmount - this.tieredPackageWithMinimumConfig = + billableMetric = tieredPackageWithMinimumPrice.billableMetric + fixedPriceQuantity = tieredPackageWithMinimumPrice.fixedPriceQuantity + planPhaseOrder = tieredPackageWithMinimumPrice.planPhaseOrder + currency = tieredPackageWithMinimumPrice.currency + conversionRate = tieredPackageWithMinimumPrice.conversionRate + item = tieredPackageWithMinimumPrice.item + creditAllocation = tieredPackageWithMinimumPrice.creditAllocation + discount = tieredPackageWithMinimumPrice.discount + minimum = tieredPackageWithMinimumPrice.minimum + minimumAmount = tieredPackageWithMinimumPrice.minimumAmount + maximum = tieredPackageWithMinimumPrice.maximum + maximumAmount = tieredPackageWithMinimumPrice.maximumAmount + tieredPackageWithMinimumConfig = tieredPackageWithMinimumPrice.tieredPackageWithMinimumConfig - additionalProperties(tieredPackageWithMinimumPrice.additionalProperties) + additionalProperties = + tieredPackageWithMinimumPrice.additionalProperties.toMutableMap() } /** @@ -22682,62 +23706,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -22746,8 +23752,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -22755,8 +23759,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -22764,80 +23766,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -22846,26 +23826,29 @@ private constructor( tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig ) = tieredPackageWithMinimumConfig(JsonField.of(tieredPackageWithMinimumConfig)) - @JsonProperty("tiered_package_with_minimum_config") - @ExcludeMissing fun tieredPackageWithMinimumConfig( tieredPackageWithMinimumConfig: JsonField ) = apply { this.tieredPackageWithMinimumConfig = tieredPackageWithMinimumConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageWithMinimumPrice = TieredPackageWithMinimumPrice( metadata, @@ -22895,16 +23878,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -22913,6 +23897,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -22934,24 +23920,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22959,6 +23942,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -22980,17 +23971,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -23003,6 +23997,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -23026,34 +24022,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23061,6 +24053,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -23225,17 +24225,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -23248,6 +24251,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -23271,34 +24276,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23306,6 +24306,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -23332,17 +24340,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -23355,6 +24366,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -23379,34 +24392,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23414,6 +24423,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -23497,17 +24514,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -23520,6 +24540,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -23543,31 +24565,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23575,6 +24592,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -23601,17 +24626,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -23637,6 +24665,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -23660,9 +24690,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -23670,8 +24700,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -23687,20 +24715,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23708,6 +24733,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -23739,19 +24772,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -23771,17 +24805,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23789,6 +24822,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -23809,17 +24850,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -23845,6 +24889,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -23868,9 +24914,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -23878,8 +24924,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -23895,20 +24939,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23916,6 +24957,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -24050,19 +25099,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageWithMinimumConfig.Builder::class) @NoAutoDetect class TieredPackageWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredPackageWithMinimumConfig = apply { if (!validated) { validated = true @@ -24083,17 +25133,17 @@ private constructor( @JvmSynthetic internal fun from(tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig) = apply { - additionalProperties(tieredPackageWithMinimumConfig.additionalProperties) + additionalProperties = + tieredPackageWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24101,6 +25151,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageWithMinimumConfig = TieredPackageWithMinimumConfig(additionalProperties.toImmutable()) } @@ -24141,38 +25199,82 @@ private constructor( "TieredPackageWithMinimumPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, tieredPackageWithMinimumConfig=$tieredPackageWithMinimumConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PackageWithAllocationPrice.Builder::class) @NoAutoDetect class PackageWithAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val packageWithAllocationConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("package_with_allocation_config") + @ExcludeMissing + private val packageWithAllocationConfig: JsonField = + JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -24302,6 +25404,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PackageWithAllocationPrice = apply { if (!validated) { metadata().validate() @@ -24370,33 +25474,31 @@ private constructor( @JvmSynthetic internal fun from(packageWithAllocationPrice: PackageWithAllocationPrice) = apply { - this.metadata = packageWithAllocationPrice.metadata - this.id = packageWithAllocationPrice.id - this.name = packageWithAllocationPrice.name - this.externalPriceId = packageWithAllocationPrice.externalPriceId - this.priceType = packageWithAllocationPrice.priceType - this.modelType = packageWithAllocationPrice.modelType - this.createdAt = packageWithAllocationPrice.createdAt - this.cadence = packageWithAllocationPrice.cadence - this.billingCycleConfiguration = - packageWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - packageWithAllocationPrice.invoicingCycleConfiguration - this.billableMetric = packageWithAllocationPrice.billableMetric - this.fixedPriceQuantity = packageWithAllocationPrice.fixedPriceQuantity - this.planPhaseOrder = packageWithAllocationPrice.planPhaseOrder - this.currency = packageWithAllocationPrice.currency - this.conversionRate = packageWithAllocationPrice.conversionRate - this.item = packageWithAllocationPrice.item - this.creditAllocation = packageWithAllocationPrice.creditAllocation - this.discount = packageWithAllocationPrice.discount - this.minimum = packageWithAllocationPrice.minimum - this.minimumAmount = packageWithAllocationPrice.minimumAmount - this.maximum = packageWithAllocationPrice.maximum - this.maximumAmount = packageWithAllocationPrice.maximumAmount - this.packageWithAllocationConfig = - packageWithAllocationPrice.packageWithAllocationConfig - additionalProperties(packageWithAllocationPrice.additionalProperties) + metadata = packageWithAllocationPrice.metadata + id = packageWithAllocationPrice.id + name = packageWithAllocationPrice.name + externalPriceId = packageWithAllocationPrice.externalPriceId + priceType = packageWithAllocationPrice.priceType + modelType = packageWithAllocationPrice.modelType + createdAt = packageWithAllocationPrice.createdAt + cadence = packageWithAllocationPrice.cadence + billingCycleConfiguration = packageWithAllocationPrice.billingCycleConfiguration + invoicingCycleConfiguration = packageWithAllocationPrice.invoicingCycleConfiguration + billableMetric = packageWithAllocationPrice.billableMetric + fixedPriceQuantity = packageWithAllocationPrice.fixedPriceQuantity + planPhaseOrder = packageWithAllocationPrice.planPhaseOrder + currency = packageWithAllocationPrice.currency + conversionRate = packageWithAllocationPrice.conversionRate + item = packageWithAllocationPrice.item + creditAllocation = packageWithAllocationPrice.creditAllocation + discount = packageWithAllocationPrice.discount + minimum = packageWithAllocationPrice.minimum + minimumAmount = packageWithAllocationPrice.minimumAmount + maximum = packageWithAllocationPrice.maximum + maximumAmount = packageWithAllocationPrice.maximumAmount + packageWithAllocationConfig = packageWithAllocationPrice.packageWithAllocationConfig + additionalProperties = + packageWithAllocationPrice.additionalProperties.toMutableMap() } /** @@ -24411,62 +25513,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -24475,8 +25559,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -24484,8 +25566,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -24493,80 +25573,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -24575,26 +25633,29 @@ private constructor( packageWithAllocationConfig: PackageWithAllocationConfig ) = packageWithAllocationConfig(JsonField.of(packageWithAllocationConfig)) - @JsonProperty("package_with_allocation_config") - @ExcludeMissing fun packageWithAllocationConfig( packageWithAllocationConfig: JsonField ) = apply { this.packageWithAllocationConfig = packageWithAllocationConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageWithAllocationPrice = PackageWithAllocationPrice( metadata, @@ -24624,16 +25685,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -24642,6 +25704,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -24663,24 +25727,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24688,6 +25749,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -24709,17 +25778,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -24732,6 +25804,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -24755,34 +25829,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24790,6 +25860,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -24954,17 +26032,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -24977,6 +26058,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -25000,34 +26083,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25035,6 +26113,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -25061,17 +26147,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -25084,6 +26173,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -25108,34 +26199,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25143,6 +26230,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -25226,17 +26321,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -25249,6 +26347,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -25272,31 +26372,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25304,6 +26399,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -25330,17 +26433,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -25366,6 +26472,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -25389,9 +26497,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -25399,8 +26507,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -25416,20 +26522,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25437,6 +26540,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -25468,19 +26579,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -25500,17 +26612,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25518,6 +26629,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -25538,17 +26657,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -25574,6 +26696,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -25597,9 +26721,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -25607,8 +26731,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -25624,20 +26746,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25645,6 +26764,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -25722,19 +26849,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageWithAllocationConfig.Builder::class) @NoAutoDetect class PackageWithAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PackageWithAllocationConfig = apply { if (!validated) { validated = true @@ -25755,17 +26883,17 @@ private constructor( @JvmSynthetic internal fun from(packageWithAllocationConfig: PackageWithAllocationConfig) = apply { - additionalProperties(packageWithAllocationConfig.additionalProperties) + additionalProperties = + packageWithAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25773,6 +26901,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageWithAllocationConfig = PackageWithAllocationConfig(additionalProperties.toImmutable()) } @@ -25870,38 +27006,81 @@ private constructor( "PackageWithAllocationPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, packageWithAllocationConfig=$packageWithAllocationConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UnitWithPercentPrice.Builder::class) @NoAutoDetect class UnitWithPercentPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val unitWithPercentConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("unit_with_percent_config") + @ExcludeMissing + private val unitWithPercentConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -26031,6 +27210,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UnitWithPercentPrice = apply { if (!validated) { metadata().validate() @@ -26098,30 +27279,30 @@ private constructor( @JvmSynthetic internal fun from(unitWithPercentPrice: UnitWithPercentPrice) = apply { - this.metadata = unitWithPercentPrice.metadata - this.id = unitWithPercentPrice.id - this.name = unitWithPercentPrice.name - this.externalPriceId = unitWithPercentPrice.externalPriceId - this.priceType = unitWithPercentPrice.priceType - this.modelType = unitWithPercentPrice.modelType - this.createdAt = unitWithPercentPrice.createdAt - this.cadence = unitWithPercentPrice.cadence - this.billingCycleConfiguration = unitWithPercentPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = unitWithPercentPrice.invoicingCycleConfiguration - this.billableMetric = unitWithPercentPrice.billableMetric - this.fixedPriceQuantity = unitWithPercentPrice.fixedPriceQuantity - this.planPhaseOrder = unitWithPercentPrice.planPhaseOrder - this.currency = unitWithPercentPrice.currency - this.conversionRate = unitWithPercentPrice.conversionRate - this.item = unitWithPercentPrice.item - this.creditAllocation = unitWithPercentPrice.creditAllocation - this.discount = unitWithPercentPrice.discount - this.minimum = unitWithPercentPrice.minimum - this.minimumAmount = unitWithPercentPrice.minimumAmount - this.maximum = unitWithPercentPrice.maximum - this.maximumAmount = unitWithPercentPrice.maximumAmount - this.unitWithPercentConfig = unitWithPercentPrice.unitWithPercentConfig - additionalProperties(unitWithPercentPrice.additionalProperties) + metadata = unitWithPercentPrice.metadata + id = unitWithPercentPrice.id + name = unitWithPercentPrice.name + externalPriceId = unitWithPercentPrice.externalPriceId + priceType = unitWithPercentPrice.priceType + modelType = unitWithPercentPrice.modelType + createdAt = unitWithPercentPrice.createdAt + cadence = unitWithPercentPrice.cadence + billingCycleConfiguration = unitWithPercentPrice.billingCycleConfiguration + invoicingCycleConfiguration = unitWithPercentPrice.invoicingCycleConfiguration + billableMetric = unitWithPercentPrice.billableMetric + fixedPriceQuantity = unitWithPercentPrice.fixedPriceQuantity + planPhaseOrder = unitWithPercentPrice.planPhaseOrder + currency = unitWithPercentPrice.currency + conversionRate = unitWithPercentPrice.conversionRate + item = unitWithPercentPrice.item + creditAllocation = unitWithPercentPrice.creditAllocation + discount = unitWithPercentPrice.discount + minimum = unitWithPercentPrice.minimum + minimumAmount = unitWithPercentPrice.minimumAmount + maximum = unitWithPercentPrice.maximum + maximumAmount = unitWithPercentPrice.maximumAmount + unitWithPercentConfig = unitWithPercentPrice.unitWithPercentConfig + additionalProperties = unitWithPercentPrice.additionalProperties.toMutableMap() } /** @@ -26136,62 +27317,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -26200,8 +27363,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -26209,8 +27370,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -26218,80 +27377,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -26299,8 +27436,6 @@ private constructor( fun unitWithPercentConfig(unitWithPercentConfig: UnitWithPercentConfig) = unitWithPercentConfig(JsonField.of(unitWithPercentConfig)) - @JsonProperty("unit_with_percent_config") - @ExcludeMissing fun unitWithPercentConfig(unitWithPercentConfig: JsonField) = apply { this.unitWithPercentConfig = unitWithPercentConfig @@ -26308,18 +27443,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithPercentPrice = UnitWithPercentPrice( metadata, @@ -26349,16 +27489,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -26367,6 +27508,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -26388,24 +27531,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -26413,6 +27553,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -26434,17 +27582,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -26457,6 +27608,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -26480,34 +27633,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -26515,6 +27664,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -26679,17 +27836,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -26702,6 +27862,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -26725,34 +27887,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -26760,6 +27917,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -26786,17 +27951,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -26809,6 +27977,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -26833,34 +28003,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -26868,6 +28034,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -26951,17 +28125,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -26974,6 +28151,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -26997,31 +28176,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27029,6 +28203,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -27055,17 +28237,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -27091,6 +28276,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -27114,9 +28301,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -27124,8 +28311,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -27141,20 +28326,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27162,6 +28344,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -27193,19 +28383,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -27225,17 +28416,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27243,6 +28433,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -27263,17 +28461,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -27299,6 +28500,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -27322,9 +28525,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -27332,8 +28535,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -27349,20 +28550,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27370,6 +28568,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -27504,19 +28710,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithPercentConfig.Builder::class) @NoAutoDetect class UnitWithPercentConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UnitWithPercentConfig = apply { if (!validated) { validated = true @@ -27536,17 +28743,16 @@ private constructor( @JvmSynthetic internal fun from(unitWithPercentConfig: UnitWithPercentConfig) = apply { - additionalProperties(unitWithPercentConfig.additionalProperties) + additionalProperties = unitWithPercentConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27554,6 +28760,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithPercentConfig = UnitWithPercentConfig(additionalProperties.toImmutable()) } @@ -27594,38 +28808,82 @@ private constructor( "UnitWithPercentPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, unitWithPercentConfig=$unitWithPercentConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MatrixWithAllocationPrice.Builder::class) @NoAutoDetect class MatrixWithAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val matrixWithAllocationConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("matrix_with_allocation_config") + @ExcludeMissing + private val matrixWithAllocationConfig: JsonField = + JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -27755,6 +29013,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixWithAllocationPrice = apply { if (!validated) { metadata().validate() @@ -27823,32 +29083,30 @@ private constructor( @JvmSynthetic internal fun from(matrixWithAllocationPrice: MatrixWithAllocationPrice) = apply { - this.metadata = matrixWithAllocationPrice.metadata - this.id = matrixWithAllocationPrice.id - this.name = matrixWithAllocationPrice.name - this.externalPriceId = matrixWithAllocationPrice.externalPriceId - this.priceType = matrixWithAllocationPrice.priceType - this.modelType = matrixWithAllocationPrice.modelType - this.createdAt = matrixWithAllocationPrice.createdAt - this.cadence = matrixWithAllocationPrice.cadence - this.billingCycleConfiguration = matrixWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - matrixWithAllocationPrice.invoicingCycleConfiguration - this.billableMetric = matrixWithAllocationPrice.billableMetric - this.fixedPriceQuantity = matrixWithAllocationPrice.fixedPriceQuantity - this.planPhaseOrder = matrixWithAllocationPrice.planPhaseOrder - this.currency = matrixWithAllocationPrice.currency - this.conversionRate = matrixWithAllocationPrice.conversionRate - this.item = matrixWithAllocationPrice.item - this.creditAllocation = matrixWithAllocationPrice.creditAllocation - this.discount = matrixWithAllocationPrice.discount - this.minimum = matrixWithAllocationPrice.minimum - this.minimumAmount = matrixWithAllocationPrice.minimumAmount - this.maximum = matrixWithAllocationPrice.maximum - this.maximumAmount = matrixWithAllocationPrice.maximumAmount - this.matrixWithAllocationConfig = - matrixWithAllocationPrice.matrixWithAllocationConfig - additionalProperties(matrixWithAllocationPrice.additionalProperties) + metadata = matrixWithAllocationPrice.metadata + id = matrixWithAllocationPrice.id + name = matrixWithAllocationPrice.name + externalPriceId = matrixWithAllocationPrice.externalPriceId + priceType = matrixWithAllocationPrice.priceType + modelType = matrixWithAllocationPrice.modelType + createdAt = matrixWithAllocationPrice.createdAt + cadence = matrixWithAllocationPrice.cadence + billingCycleConfiguration = matrixWithAllocationPrice.billingCycleConfiguration + invoicingCycleConfiguration = matrixWithAllocationPrice.invoicingCycleConfiguration + billableMetric = matrixWithAllocationPrice.billableMetric + fixedPriceQuantity = matrixWithAllocationPrice.fixedPriceQuantity + planPhaseOrder = matrixWithAllocationPrice.planPhaseOrder + currency = matrixWithAllocationPrice.currency + conversionRate = matrixWithAllocationPrice.conversionRate + item = matrixWithAllocationPrice.item + creditAllocation = matrixWithAllocationPrice.creditAllocation + discount = matrixWithAllocationPrice.discount + minimum = matrixWithAllocationPrice.minimum + minimumAmount = matrixWithAllocationPrice.minimumAmount + maximum = matrixWithAllocationPrice.maximum + maximumAmount = matrixWithAllocationPrice.maximumAmount + matrixWithAllocationConfig = matrixWithAllocationPrice.matrixWithAllocationConfig + additionalProperties = matrixWithAllocationPrice.additionalProperties.toMutableMap() } /** @@ -27863,62 +29121,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -27927,8 +29167,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -27936,8 +29174,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -27945,80 +29181,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -28026,26 +29240,29 @@ private constructor( fun matrixWithAllocationConfig(matrixWithAllocationConfig: MatrixWithAllocationConfig) = matrixWithAllocationConfig(JsonField.of(matrixWithAllocationConfig)) - @JsonProperty("matrix_with_allocation_config") - @ExcludeMissing fun matrixWithAllocationConfig( matrixWithAllocationConfig: JsonField ) = apply { this.matrixWithAllocationConfig = matrixWithAllocationConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixWithAllocationPrice = MatrixWithAllocationPrice( metadata, @@ -28075,16 +29292,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -28093,6 +29311,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -28114,24 +29334,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28139,6 +29356,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -28160,17 +29385,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -28183,6 +29411,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -28206,34 +29436,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28241,6 +29467,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -28405,17 +29639,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -28428,6 +29665,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -28451,34 +29690,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28486,6 +29720,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -28512,17 +29754,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -28535,6 +29780,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -28559,34 +29806,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28594,6 +29837,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -28677,17 +29928,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -28700,6 +29954,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -28723,31 +29979,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28755,6 +30006,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -28781,19 +30040,26 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MatrixWithAllocationConfig.Builder::class) @NoAutoDetect class MatrixWithAllocationConfig + @JsonCreator private constructor( - private val dimensions: JsonField>, - private val defaultUnitAmount: JsonField, - private val matrixValues: JsonField>, - private val allocation: JsonField, - private val additionalProperties: Map, + @JsonProperty("dimensions") + @ExcludeMissing + private val dimensions: JsonField> = JsonMissing.of(), + @JsonProperty("default_unit_amount") + @ExcludeMissing + private val defaultUnitAmount: JsonField = JsonMissing.of(), + @JsonProperty("matrix_values") + @ExcludeMissing + private val matrixValues: JsonField> = JsonMissing.of(), + @JsonProperty("allocation") + @ExcludeMissing + private val allocation: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** One or two event property values to evaluate matrix groups by */ fun dimensions(): List = dimensions.getRequired("dimensions") @@ -28824,6 +30090,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixWithAllocationConfig = apply { if (!validated) { dimensions() @@ -28851,19 +30119,18 @@ private constructor( @JvmSynthetic internal fun from(matrixWithAllocationConfig: MatrixWithAllocationConfig) = apply { - this.dimensions = matrixWithAllocationConfig.dimensions - this.defaultUnitAmount = matrixWithAllocationConfig.defaultUnitAmount - this.matrixValues = matrixWithAllocationConfig.matrixValues - this.allocation = matrixWithAllocationConfig.allocation - additionalProperties(matrixWithAllocationConfig.additionalProperties) + dimensions = matrixWithAllocationConfig.dimensions + defaultUnitAmount = matrixWithAllocationConfig.defaultUnitAmount + matrixValues = matrixWithAllocationConfig.matrixValues + allocation = matrixWithAllocationConfig.allocation + additionalProperties = + matrixWithAllocationConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ fun dimensions(dimensions: List) = dimensions(JsonField.of(dimensions)) /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") - @ExcludeMissing fun dimensions(dimensions: JsonField>) = apply { this.dimensions = dimensions } @@ -28877,8 +30144,6 @@ private constructor( /** * Default per unit rate for any usage not bucketed into a specified matrix_value */ - @JsonProperty("default_unit_amount") - @ExcludeMissing fun defaultUnitAmount(defaultUnitAmount: JsonField) = apply { this.defaultUnitAmount = defaultUnitAmount } @@ -28888,8 +30153,6 @@ private constructor( matrixValues(JsonField.of(matrixValues)) /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") - @ExcludeMissing fun matrixValues(matrixValues: JsonField>) = apply { this.matrixValues = matrixValues } @@ -28898,20 +30161,17 @@ private constructor( fun allocation(allocation: Double) = allocation(JsonField.of(allocation)) /** Allocation to be used to calculate the price */ - @JsonProperty("allocation") - @ExcludeMissing fun allocation(allocation: JsonField) = apply { this.allocation = allocation } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28919,6 +30179,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixWithAllocationConfig = MatrixWithAllocationConfig( dimensions.map { it.toImmutable() }, @@ -28929,17 +30197,20 @@ private constructor( ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("unit_amount") + @ExcludeMissing + private val unitAmount: JsonField = JsonMissing.of(), + @JsonProperty("dimension_values") + @ExcludeMissing + private val dimensionValues: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Unit price for the specified dimension_values */ fun unitAmount(): String = unitAmount.getRequired("unit_amount") @@ -28967,6 +30238,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixValue = apply { if (!validated) { unitAmount() @@ -28990,17 +30263,15 @@ private constructor( @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues + additionalProperties = matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") - @ExcludeMissing fun unitAmount(unitAmount: JsonField) = apply { this.unitAmount = unitAmount } @@ -29018,20 +30289,17 @@ private constructor( * ["region", "tier"] could be used to filter cloud usage by a cloud region and * an instance tier. */ - @JsonProperty("dimension_values") - @ExcludeMissing fun dimensionValues(dimensionValues: JsonField>) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -29039,6 +30307,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( unitAmount, @@ -29083,17 +30359,20 @@ private constructor( "MatrixWithAllocationConfig{dimensions=$dimensions, defaultUnitAmount=$defaultUnitAmount, matrixValues=$matrixValues, allocation=$allocation, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -29119,6 +30398,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -29142,9 +30423,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -29152,8 +30433,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -29169,20 +30448,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -29190,6 +30466,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -29221,19 +30505,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -29253,17 +30538,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -29271,6 +30555,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -29291,17 +30583,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -29327,6 +30622,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -29350,9 +30647,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -29360,8 +30657,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -29377,20 +30672,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -29398,6 +30690,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -29550,38 +30850,82 @@ private constructor( "MatrixWithAllocationPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, matrixWithAllocationConfig=$matrixWithAllocationConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = TieredWithProrationPrice.Builder::class) @NoAutoDetect class TieredWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val tieredWithProrationConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("tiered_with_proration_config") + @ExcludeMissing + private val tieredWithProrationConfig: JsonField = + JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -29711,6 +31055,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredWithProrationPrice = apply { if (!validated) { metadata().validate() @@ -29779,31 +31125,30 @@ private constructor( @JvmSynthetic internal fun from(tieredWithProrationPrice: TieredWithProrationPrice) = apply { - this.metadata = tieredWithProrationPrice.metadata - this.id = tieredWithProrationPrice.id - this.name = tieredWithProrationPrice.name - this.externalPriceId = tieredWithProrationPrice.externalPriceId - this.priceType = tieredWithProrationPrice.priceType - this.modelType = tieredWithProrationPrice.modelType - this.createdAt = tieredWithProrationPrice.createdAt - this.cadence = tieredWithProrationPrice.cadence - this.billingCycleConfiguration = tieredWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - tieredWithProrationPrice.invoicingCycleConfiguration - this.billableMetric = tieredWithProrationPrice.billableMetric - this.fixedPriceQuantity = tieredWithProrationPrice.fixedPriceQuantity - this.planPhaseOrder = tieredWithProrationPrice.planPhaseOrder - this.currency = tieredWithProrationPrice.currency - this.conversionRate = tieredWithProrationPrice.conversionRate - this.item = tieredWithProrationPrice.item - this.creditAllocation = tieredWithProrationPrice.creditAllocation - this.discount = tieredWithProrationPrice.discount - this.minimum = tieredWithProrationPrice.minimum - this.minimumAmount = tieredWithProrationPrice.minimumAmount - this.maximum = tieredWithProrationPrice.maximum - this.maximumAmount = tieredWithProrationPrice.maximumAmount - this.tieredWithProrationConfig = tieredWithProrationPrice.tieredWithProrationConfig - additionalProperties(tieredWithProrationPrice.additionalProperties) + metadata = tieredWithProrationPrice.metadata + id = tieredWithProrationPrice.id + name = tieredWithProrationPrice.name + externalPriceId = tieredWithProrationPrice.externalPriceId + priceType = tieredWithProrationPrice.priceType + modelType = tieredWithProrationPrice.modelType + createdAt = tieredWithProrationPrice.createdAt + cadence = tieredWithProrationPrice.cadence + billingCycleConfiguration = tieredWithProrationPrice.billingCycleConfiguration + invoicingCycleConfiguration = tieredWithProrationPrice.invoicingCycleConfiguration + billableMetric = tieredWithProrationPrice.billableMetric + fixedPriceQuantity = tieredWithProrationPrice.fixedPriceQuantity + planPhaseOrder = tieredWithProrationPrice.planPhaseOrder + currency = tieredWithProrationPrice.currency + conversionRate = tieredWithProrationPrice.conversionRate + item = tieredWithProrationPrice.item + creditAllocation = tieredWithProrationPrice.creditAllocation + discount = tieredWithProrationPrice.discount + minimum = tieredWithProrationPrice.minimum + minimumAmount = tieredWithProrationPrice.minimumAmount + maximum = tieredWithProrationPrice.maximum + maximumAmount = tieredWithProrationPrice.maximumAmount + tieredWithProrationConfig = tieredWithProrationPrice.tieredWithProrationConfig + additionalProperties = tieredWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -29818,62 +31163,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -29882,8 +31209,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -29891,8 +31216,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -29900,80 +31223,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -29981,26 +31282,29 @@ private constructor( fun tieredWithProrationConfig(tieredWithProrationConfig: TieredWithProrationConfig) = tieredWithProrationConfig(JsonField.of(tieredWithProrationConfig)) - @JsonProperty("tiered_with_proration_config") - @ExcludeMissing fun tieredWithProrationConfig( tieredWithProrationConfig: JsonField ) = apply { this.tieredWithProrationConfig = tieredWithProrationConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithProrationPrice = TieredWithProrationPrice( metadata, @@ -30030,16 +31334,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -30048,6 +31353,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -30069,24 +31376,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30094,6 +31398,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -30115,17 +31427,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -30138,6 +31453,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -30161,34 +31478,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30196,6 +31509,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -30360,17 +31681,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -30383,6 +31707,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -30406,34 +31732,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30441,6 +31762,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -30467,17 +31796,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -30490,6 +31822,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -30514,34 +31848,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30549,6 +31879,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -30632,17 +31970,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -30655,6 +31996,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -30678,31 +32021,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30710,6 +32048,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -30736,17 +32082,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -30772,6 +32121,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -30795,9 +32146,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -30805,8 +32156,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -30822,20 +32171,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30843,6 +32189,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -30874,19 +32228,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -30906,17 +32261,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30924,6 +32278,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -30944,17 +32306,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -30980,6 +32345,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -31003,9 +32370,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -31013,8 +32380,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -31030,20 +32395,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -31051,6 +32413,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -31185,19 +32555,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithProrationConfig.Builder::class) @NoAutoDetect class TieredWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TieredWithProrationConfig = apply { if (!validated) { validated = true @@ -31217,17 +32588,17 @@ private constructor( @JvmSynthetic internal fun from(tieredWithProrationConfig: TieredWithProrationConfig) = apply { - additionalProperties(tieredWithProrationConfig.additionalProperties) + additionalProperties = + tieredWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -31235,6 +32606,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithProrationConfig = TieredWithProrationConfig(additionalProperties.toImmutable()) } @@ -31275,38 +32654,81 @@ private constructor( "TieredWithProrationPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, tieredWithProrationConfig=$tieredWithProrationConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UnitWithProrationPrice.Builder::class) @NoAutoDetect class UnitWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val unitWithProrationConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("unit_with_proration_config") + @ExcludeMissing + private val unitWithProrationConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -31436,6 +32858,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UnitWithProrationPrice = apply { if (!validated) { metadata().validate() @@ -31504,31 +32928,30 @@ private constructor( @JvmSynthetic internal fun from(unitWithProrationPrice: UnitWithProrationPrice) = apply { - this.metadata = unitWithProrationPrice.metadata - this.id = unitWithProrationPrice.id - this.name = unitWithProrationPrice.name - this.externalPriceId = unitWithProrationPrice.externalPriceId - this.priceType = unitWithProrationPrice.priceType - this.modelType = unitWithProrationPrice.modelType - this.createdAt = unitWithProrationPrice.createdAt - this.cadence = unitWithProrationPrice.cadence - this.billingCycleConfiguration = unitWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - unitWithProrationPrice.invoicingCycleConfiguration - this.billableMetric = unitWithProrationPrice.billableMetric - this.fixedPriceQuantity = unitWithProrationPrice.fixedPriceQuantity - this.planPhaseOrder = unitWithProrationPrice.planPhaseOrder - this.currency = unitWithProrationPrice.currency - this.conversionRate = unitWithProrationPrice.conversionRate - this.item = unitWithProrationPrice.item - this.creditAllocation = unitWithProrationPrice.creditAllocation - this.discount = unitWithProrationPrice.discount - this.minimum = unitWithProrationPrice.minimum - this.minimumAmount = unitWithProrationPrice.minimumAmount - this.maximum = unitWithProrationPrice.maximum - this.maximumAmount = unitWithProrationPrice.maximumAmount - this.unitWithProrationConfig = unitWithProrationPrice.unitWithProrationConfig - additionalProperties(unitWithProrationPrice.additionalProperties) + metadata = unitWithProrationPrice.metadata + id = unitWithProrationPrice.id + name = unitWithProrationPrice.name + externalPriceId = unitWithProrationPrice.externalPriceId + priceType = unitWithProrationPrice.priceType + modelType = unitWithProrationPrice.modelType + createdAt = unitWithProrationPrice.createdAt + cadence = unitWithProrationPrice.cadence + billingCycleConfiguration = unitWithProrationPrice.billingCycleConfiguration + invoicingCycleConfiguration = unitWithProrationPrice.invoicingCycleConfiguration + billableMetric = unitWithProrationPrice.billableMetric + fixedPriceQuantity = unitWithProrationPrice.fixedPriceQuantity + planPhaseOrder = unitWithProrationPrice.planPhaseOrder + currency = unitWithProrationPrice.currency + conversionRate = unitWithProrationPrice.conversionRate + item = unitWithProrationPrice.item + creditAllocation = unitWithProrationPrice.creditAllocation + discount = unitWithProrationPrice.discount + minimum = unitWithProrationPrice.minimum + minimumAmount = unitWithProrationPrice.minimumAmount + maximum = unitWithProrationPrice.maximum + maximumAmount = unitWithProrationPrice.maximumAmount + unitWithProrationConfig = unitWithProrationPrice.unitWithProrationConfig + additionalProperties = unitWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -31543,62 +32966,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -31607,8 +33012,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -31616,8 +33019,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -31625,80 +33026,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -31706,26 +33085,29 @@ private constructor( fun unitWithProrationConfig(unitWithProrationConfig: UnitWithProrationConfig) = unitWithProrationConfig(JsonField.of(unitWithProrationConfig)) - @JsonProperty("unit_with_proration_config") - @ExcludeMissing fun unitWithProrationConfig( unitWithProrationConfig: JsonField ) = apply { this.unitWithProrationConfig = unitWithProrationConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithProrationPrice = UnitWithProrationPrice( metadata, @@ -31755,16 +33137,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -31773,6 +33156,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -31794,24 +33179,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -31819,6 +33201,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -31840,17 +33230,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -31863,6 +33256,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -31886,34 +33281,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -31921,6 +33312,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -32085,17 +33484,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -32108,6 +33510,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -32131,34 +33535,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32166,6 +33565,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -32192,17 +33599,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -32215,6 +33625,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -32239,34 +33651,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32274,6 +33682,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -32357,17 +33773,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -32380,6 +33799,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -32403,31 +33824,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32435,6 +33851,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -32461,17 +33885,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -32497,6 +33924,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -32520,9 +33949,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -32530,8 +33959,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -32547,20 +33974,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32568,6 +33992,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -32599,19 +34031,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -32631,17 +34064,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32649,6 +34081,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -32669,17 +34109,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -32705,6 +34148,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -32728,9 +34173,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -32738,8 +34183,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -32755,20 +34198,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32776,6 +34216,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -32910,19 +34358,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithProrationConfig.Builder::class) @NoAutoDetect class UnitWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UnitWithProrationConfig = apply { if (!validated) { validated = true @@ -32942,17 +34391,17 @@ private constructor( @JvmSynthetic internal fun from(unitWithProrationConfig: UnitWithProrationConfig) = apply { - additionalProperties(unitWithProrationConfig.additionalProperties) + additionalProperties = + unitWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32960,6 +34409,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithProrationConfig = UnitWithProrationConfig(additionalProperties.toImmutable()) } @@ -33000,38 +34457,81 @@ private constructor( "UnitWithProrationPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, unitWithProrationConfig=$unitWithProrationConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedAllocationPrice.Builder::class) @NoAutoDetect class GroupedAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val groupedAllocationConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("grouped_allocation_config") + @ExcludeMissing + private val groupedAllocationConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -33161,6 +34661,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedAllocationPrice = apply { if (!validated) { metadata().validate() @@ -33229,31 +34731,30 @@ private constructor( @JvmSynthetic internal fun from(groupedAllocationPrice: GroupedAllocationPrice) = apply { - this.metadata = groupedAllocationPrice.metadata - this.id = groupedAllocationPrice.id - this.name = groupedAllocationPrice.name - this.externalPriceId = groupedAllocationPrice.externalPriceId - this.priceType = groupedAllocationPrice.priceType - this.modelType = groupedAllocationPrice.modelType - this.createdAt = groupedAllocationPrice.createdAt - this.cadence = groupedAllocationPrice.cadence - this.billingCycleConfiguration = groupedAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - groupedAllocationPrice.invoicingCycleConfiguration - this.billableMetric = groupedAllocationPrice.billableMetric - this.fixedPriceQuantity = groupedAllocationPrice.fixedPriceQuantity - this.planPhaseOrder = groupedAllocationPrice.planPhaseOrder - this.currency = groupedAllocationPrice.currency - this.conversionRate = groupedAllocationPrice.conversionRate - this.item = groupedAllocationPrice.item - this.creditAllocation = groupedAllocationPrice.creditAllocation - this.discount = groupedAllocationPrice.discount - this.minimum = groupedAllocationPrice.minimum - this.minimumAmount = groupedAllocationPrice.minimumAmount - this.maximum = groupedAllocationPrice.maximum - this.maximumAmount = groupedAllocationPrice.maximumAmount - this.groupedAllocationConfig = groupedAllocationPrice.groupedAllocationConfig - additionalProperties(groupedAllocationPrice.additionalProperties) + metadata = groupedAllocationPrice.metadata + id = groupedAllocationPrice.id + name = groupedAllocationPrice.name + externalPriceId = groupedAllocationPrice.externalPriceId + priceType = groupedAllocationPrice.priceType + modelType = groupedAllocationPrice.modelType + createdAt = groupedAllocationPrice.createdAt + cadence = groupedAllocationPrice.cadence + billingCycleConfiguration = groupedAllocationPrice.billingCycleConfiguration + invoicingCycleConfiguration = groupedAllocationPrice.invoicingCycleConfiguration + billableMetric = groupedAllocationPrice.billableMetric + fixedPriceQuantity = groupedAllocationPrice.fixedPriceQuantity + planPhaseOrder = groupedAllocationPrice.planPhaseOrder + currency = groupedAllocationPrice.currency + conversionRate = groupedAllocationPrice.conversionRate + item = groupedAllocationPrice.item + creditAllocation = groupedAllocationPrice.creditAllocation + discount = groupedAllocationPrice.discount + minimum = groupedAllocationPrice.minimum + minimumAmount = groupedAllocationPrice.minimumAmount + maximum = groupedAllocationPrice.maximum + maximumAmount = groupedAllocationPrice.maximumAmount + groupedAllocationConfig = groupedAllocationPrice.groupedAllocationConfig + additionalProperties = groupedAllocationPrice.additionalProperties.toMutableMap() } /** @@ -33268,62 +34769,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -33332,8 +34815,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -33341,8 +34822,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -33350,80 +34829,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -33431,26 +34888,29 @@ private constructor( fun groupedAllocationConfig(groupedAllocationConfig: GroupedAllocationConfig) = groupedAllocationConfig(JsonField.of(groupedAllocationConfig)) - @JsonProperty("grouped_allocation_config") - @ExcludeMissing fun groupedAllocationConfig( groupedAllocationConfig: JsonField ) = apply { this.groupedAllocationConfig = groupedAllocationConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedAllocationPrice = GroupedAllocationPrice( metadata, @@ -33480,16 +34940,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -33498,6 +34959,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -33519,24 +34982,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -33544,6 +35004,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -33565,17 +35033,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -33588,6 +35059,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -33611,34 +35084,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -33646,6 +35115,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -33810,17 +35287,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -33833,6 +35313,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -33856,34 +35338,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -33891,6 +35368,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -33917,19 +35402,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedAllocationConfig.Builder::class) @NoAutoDetect class GroupedAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedAllocationConfig = apply { if (!validated) { validated = true @@ -33949,17 +35435,17 @@ private constructor( @JvmSynthetic internal fun from(groupedAllocationConfig: GroupedAllocationConfig) = apply { - additionalProperties(groupedAllocationConfig.additionalProperties) + additionalProperties = + groupedAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -33967,6 +35453,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedAllocationConfig = GroupedAllocationConfig(additionalProperties.toImmutable()) } @@ -33989,17 +35483,20 @@ private constructor( "GroupedAllocationConfig{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -34012,6 +35509,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -34036,34 +35535,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -34071,6 +35566,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -34154,17 +35657,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -34177,6 +35683,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -34200,31 +35708,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -34232,6 +35735,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -34258,17 +35769,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -34294,6 +35808,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -34317,9 +35833,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -34327,8 +35843,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -34344,20 +35858,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -34365,6 +35876,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -34396,19 +35915,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -34428,17 +35948,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -34446,6 +35965,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -34466,17 +35993,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -34502,6 +36032,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -34525,9 +36057,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -34535,8 +36067,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -34552,20 +36082,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -34573,6 +36100,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -34725,38 +36260,82 @@ private constructor( "GroupedAllocationPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, groupedAllocationConfig=$groupedAllocationConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedWithProratedMinimumPrice.Builder::class) @NoAutoDetect class GroupedWithProratedMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val groupedWithProratedMinimumConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("grouped_with_prorated_minimum_config") + @ExcludeMissing + private val groupedWithProratedMinimumConfig: JsonField = + JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -34886,6 +36465,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedWithProratedMinimumPrice = apply { if (!validated) { metadata().validate() @@ -34956,33 +36537,34 @@ private constructor( @JvmSynthetic internal fun from(groupedWithProratedMinimumPrice: GroupedWithProratedMinimumPrice) = apply { - this.metadata = groupedWithProratedMinimumPrice.metadata - this.id = groupedWithProratedMinimumPrice.id - this.name = groupedWithProratedMinimumPrice.name - this.externalPriceId = groupedWithProratedMinimumPrice.externalPriceId - this.priceType = groupedWithProratedMinimumPrice.priceType - this.modelType = groupedWithProratedMinimumPrice.modelType - this.createdAt = groupedWithProratedMinimumPrice.createdAt - this.cadence = groupedWithProratedMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = groupedWithProratedMinimumPrice.metadata + id = groupedWithProratedMinimumPrice.id + name = groupedWithProratedMinimumPrice.name + externalPriceId = groupedWithProratedMinimumPrice.externalPriceId + priceType = groupedWithProratedMinimumPrice.priceType + modelType = groupedWithProratedMinimumPrice.modelType + createdAt = groupedWithProratedMinimumPrice.createdAt + cadence = groupedWithProratedMinimumPrice.cadence + billingCycleConfiguration = groupedWithProratedMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = groupedWithProratedMinimumPrice.invoicingCycleConfiguration - this.billableMetric = groupedWithProratedMinimumPrice.billableMetric - this.fixedPriceQuantity = groupedWithProratedMinimumPrice.fixedPriceQuantity - this.planPhaseOrder = groupedWithProratedMinimumPrice.planPhaseOrder - this.currency = groupedWithProratedMinimumPrice.currency - this.conversionRate = groupedWithProratedMinimumPrice.conversionRate - this.item = groupedWithProratedMinimumPrice.item - this.creditAllocation = groupedWithProratedMinimumPrice.creditAllocation - this.discount = groupedWithProratedMinimumPrice.discount - this.minimum = groupedWithProratedMinimumPrice.minimum - this.minimumAmount = groupedWithProratedMinimumPrice.minimumAmount - this.maximum = groupedWithProratedMinimumPrice.maximum - this.maximumAmount = groupedWithProratedMinimumPrice.maximumAmount - this.groupedWithProratedMinimumConfig = + billableMetric = groupedWithProratedMinimumPrice.billableMetric + fixedPriceQuantity = groupedWithProratedMinimumPrice.fixedPriceQuantity + planPhaseOrder = groupedWithProratedMinimumPrice.planPhaseOrder + currency = groupedWithProratedMinimumPrice.currency + conversionRate = groupedWithProratedMinimumPrice.conversionRate + item = groupedWithProratedMinimumPrice.item + creditAllocation = groupedWithProratedMinimumPrice.creditAllocation + discount = groupedWithProratedMinimumPrice.discount + minimum = groupedWithProratedMinimumPrice.minimum + minimumAmount = groupedWithProratedMinimumPrice.minimumAmount + maximum = groupedWithProratedMinimumPrice.maximum + maximumAmount = groupedWithProratedMinimumPrice.maximumAmount + groupedWithProratedMinimumConfig = groupedWithProratedMinimumPrice.groupedWithProratedMinimumConfig - additionalProperties(groupedWithProratedMinimumPrice.additionalProperties) + additionalProperties = + groupedWithProratedMinimumPrice.additionalProperties.toMutableMap() } /** @@ -34997,62 +36579,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -35061,8 +36625,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -35070,8 +36632,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -35079,80 +36639,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -35161,26 +36699,29 @@ private constructor( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = groupedWithProratedMinimumConfig(JsonField.of(groupedWithProratedMinimumConfig)) - @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing fun groupedWithProratedMinimumConfig( groupedWithProratedMinimumConfig: JsonField ) = apply { this.groupedWithProratedMinimumConfig = groupedWithProratedMinimumConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithProratedMinimumPrice = GroupedWithProratedMinimumPrice( metadata, @@ -35210,16 +36751,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -35228,6 +36770,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -35249,24 +36793,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -35274,6 +36815,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -35295,17 +36844,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -35318,6 +36870,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -35341,34 +36895,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -35376,6 +36926,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -35540,17 +37098,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -35563,6 +37124,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -35586,34 +37149,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -35621,6 +37179,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -35647,19 +37213,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedWithProratedMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithProratedMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedWithProratedMinimumConfig = apply { if (!validated) { validated = true @@ -35681,17 +37248,17 @@ private constructor( internal fun from( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = apply { - additionalProperties(groupedWithProratedMinimumConfig.additionalProperties) + additionalProperties = + groupedWithProratedMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -35699,6 +37266,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithProratedMinimumConfig = GroupedWithProratedMinimumConfig(additionalProperties.toImmutable()) } @@ -35721,17 +37296,20 @@ private constructor( "GroupedWithProratedMinimumConfig{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -35744,6 +37322,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -35768,34 +37348,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -35803,6 +37379,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -35886,17 +37470,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -35909,6 +37496,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -35932,31 +37521,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -35964,6 +37548,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -35990,17 +37582,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -36026,6 +37621,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -36049,9 +37646,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -36059,8 +37656,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -36076,20 +37671,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -36097,6 +37689,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -36128,19 +37728,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -36160,17 +37761,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -36178,6 +37778,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -36198,17 +37806,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -36234,6 +37845,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -36257,9 +37870,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -36267,8 +37880,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -36284,20 +37895,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -36305,6 +37913,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -36457,38 +38073,82 @@ private constructor( "GroupedWithProratedMinimumPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, groupedWithProratedMinimumConfig=$groupedWithProratedMinimumConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedWithMeteredMinimumPrice.Builder::class) @NoAutoDetect class GroupedWithMeteredMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val groupedWithMeteredMinimumConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("grouped_with_metered_minimum_config") + @ExcludeMissing + private val groupedWithMeteredMinimumConfig: JsonField = + JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -36618,6 +38278,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedWithMeteredMinimumPrice = apply { if (!validated) { metadata().validate() @@ -36688,33 +38350,34 @@ private constructor( @JvmSynthetic internal fun from(groupedWithMeteredMinimumPrice: GroupedWithMeteredMinimumPrice) = apply { - this.metadata = groupedWithMeteredMinimumPrice.metadata - this.id = groupedWithMeteredMinimumPrice.id - this.name = groupedWithMeteredMinimumPrice.name - this.externalPriceId = groupedWithMeteredMinimumPrice.externalPriceId - this.priceType = groupedWithMeteredMinimumPrice.priceType - this.modelType = groupedWithMeteredMinimumPrice.modelType - this.createdAt = groupedWithMeteredMinimumPrice.createdAt - this.cadence = groupedWithMeteredMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = groupedWithMeteredMinimumPrice.metadata + id = groupedWithMeteredMinimumPrice.id + name = groupedWithMeteredMinimumPrice.name + externalPriceId = groupedWithMeteredMinimumPrice.externalPriceId + priceType = groupedWithMeteredMinimumPrice.priceType + modelType = groupedWithMeteredMinimumPrice.modelType + createdAt = groupedWithMeteredMinimumPrice.createdAt + cadence = groupedWithMeteredMinimumPrice.cadence + billingCycleConfiguration = groupedWithMeteredMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = groupedWithMeteredMinimumPrice.invoicingCycleConfiguration - this.billableMetric = groupedWithMeteredMinimumPrice.billableMetric - this.fixedPriceQuantity = groupedWithMeteredMinimumPrice.fixedPriceQuantity - this.planPhaseOrder = groupedWithMeteredMinimumPrice.planPhaseOrder - this.currency = groupedWithMeteredMinimumPrice.currency - this.conversionRate = groupedWithMeteredMinimumPrice.conversionRate - this.item = groupedWithMeteredMinimumPrice.item - this.creditAllocation = groupedWithMeteredMinimumPrice.creditAllocation - this.discount = groupedWithMeteredMinimumPrice.discount - this.minimum = groupedWithMeteredMinimumPrice.minimum - this.minimumAmount = groupedWithMeteredMinimumPrice.minimumAmount - this.maximum = groupedWithMeteredMinimumPrice.maximum - this.maximumAmount = groupedWithMeteredMinimumPrice.maximumAmount - this.groupedWithMeteredMinimumConfig = + billableMetric = groupedWithMeteredMinimumPrice.billableMetric + fixedPriceQuantity = groupedWithMeteredMinimumPrice.fixedPriceQuantity + planPhaseOrder = groupedWithMeteredMinimumPrice.planPhaseOrder + currency = groupedWithMeteredMinimumPrice.currency + conversionRate = groupedWithMeteredMinimumPrice.conversionRate + item = groupedWithMeteredMinimumPrice.item + creditAllocation = groupedWithMeteredMinimumPrice.creditAllocation + discount = groupedWithMeteredMinimumPrice.discount + minimum = groupedWithMeteredMinimumPrice.minimum + minimumAmount = groupedWithMeteredMinimumPrice.minimumAmount + maximum = groupedWithMeteredMinimumPrice.maximum + maximumAmount = groupedWithMeteredMinimumPrice.maximumAmount + groupedWithMeteredMinimumConfig = groupedWithMeteredMinimumPrice.groupedWithMeteredMinimumConfig - additionalProperties(groupedWithMeteredMinimumPrice.additionalProperties) + additionalProperties = + groupedWithMeteredMinimumPrice.additionalProperties.toMutableMap() } /** @@ -36729,62 +38392,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -36793,8 +38438,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -36802,8 +38445,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -36811,80 +38452,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -36893,26 +38512,29 @@ private constructor( groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig ) = groupedWithMeteredMinimumConfig(JsonField.of(groupedWithMeteredMinimumConfig)) - @JsonProperty("grouped_with_metered_minimum_config") - @ExcludeMissing fun groupedWithMeteredMinimumConfig( groupedWithMeteredMinimumConfig: JsonField ) = apply { this.groupedWithMeteredMinimumConfig = groupedWithMeteredMinimumConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithMeteredMinimumPrice = GroupedWithMeteredMinimumPrice( metadata, @@ -36942,16 +38564,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -36960,6 +38583,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -36981,24 +38606,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -37006,6 +38628,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -37027,17 +38657,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -37050,6 +38683,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -37073,34 +38708,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -37108,6 +38739,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -37272,17 +38911,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -37295,6 +38937,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -37318,34 +38962,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -37353,6 +38992,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -37379,19 +39026,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedWithMeteredMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithMeteredMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedWithMeteredMinimumConfig = apply { if (!validated) { validated = true @@ -37413,17 +39061,17 @@ private constructor( internal fun from( groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig ) = apply { - additionalProperties(groupedWithMeteredMinimumConfig.additionalProperties) + additionalProperties = + groupedWithMeteredMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -37431,6 +39079,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithMeteredMinimumConfig = GroupedWithMeteredMinimumConfig(additionalProperties.toImmutable()) } @@ -37453,17 +39109,20 @@ private constructor( "GroupedWithMeteredMinimumConfig{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -37476,6 +39135,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -37500,34 +39161,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -37535,6 +39192,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -37618,17 +39283,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -37641,6 +39309,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -37664,31 +39334,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -37696,6 +39361,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -37722,17 +39395,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -37758,6 +39434,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -37781,9 +39459,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -37791,8 +39469,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -37808,20 +39484,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -37829,6 +39502,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -37860,19 +39541,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -37892,17 +39574,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -37910,6 +39591,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -37930,17 +39619,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -37966,6 +39658,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -37989,9 +39683,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -37999,8 +39693,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -38016,20 +39708,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -38037,6 +39726,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -38189,38 +39886,82 @@ private constructor( "GroupedWithMeteredMinimumPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, groupedWithMeteredMinimumConfig=$groupedWithMeteredMinimumConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MatrixWithDisplayNamePrice.Builder::class) @NoAutoDetect class MatrixWithDisplayNamePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val matrixWithDisplayNameConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("matrix_with_display_name_config") + @ExcludeMissing + private val matrixWithDisplayNameConfig: JsonField = + JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -38350,6 +40091,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixWithDisplayNamePrice = apply { if (!validated) { metadata().validate() @@ -38418,33 +40161,31 @@ private constructor( @JvmSynthetic internal fun from(matrixWithDisplayNamePrice: MatrixWithDisplayNamePrice) = apply { - this.metadata = matrixWithDisplayNamePrice.metadata - this.id = matrixWithDisplayNamePrice.id - this.name = matrixWithDisplayNamePrice.name - this.externalPriceId = matrixWithDisplayNamePrice.externalPriceId - this.priceType = matrixWithDisplayNamePrice.priceType - this.modelType = matrixWithDisplayNamePrice.modelType - this.createdAt = matrixWithDisplayNamePrice.createdAt - this.cadence = matrixWithDisplayNamePrice.cadence - this.billingCycleConfiguration = - matrixWithDisplayNamePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - matrixWithDisplayNamePrice.invoicingCycleConfiguration - this.billableMetric = matrixWithDisplayNamePrice.billableMetric - this.fixedPriceQuantity = matrixWithDisplayNamePrice.fixedPriceQuantity - this.planPhaseOrder = matrixWithDisplayNamePrice.planPhaseOrder - this.currency = matrixWithDisplayNamePrice.currency - this.conversionRate = matrixWithDisplayNamePrice.conversionRate - this.item = matrixWithDisplayNamePrice.item - this.creditAllocation = matrixWithDisplayNamePrice.creditAllocation - this.discount = matrixWithDisplayNamePrice.discount - this.minimum = matrixWithDisplayNamePrice.minimum - this.minimumAmount = matrixWithDisplayNamePrice.minimumAmount - this.maximum = matrixWithDisplayNamePrice.maximum - this.maximumAmount = matrixWithDisplayNamePrice.maximumAmount - this.matrixWithDisplayNameConfig = - matrixWithDisplayNamePrice.matrixWithDisplayNameConfig - additionalProperties(matrixWithDisplayNamePrice.additionalProperties) + metadata = matrixWithDisplayNamePrice.metadata + id = matrixWithDisplayNamePrice.id + name = matrixWithDisplayNamePrice.name + externalPriceId = matrixWithDisplayNamePrice.externalPriceId + priceType = matrixWithDisplayNamePrice.priceType + modelType = matrixWithDisplayNamePrice.modelType + createdAt = matrixWithDisplayNamePrice.createdAt + cadence = matrixWithDisplayNamePrice.cadence + billingCycleConfiguration = matrixWithDisplayNamePrice.billingCycleConfiguration + invoicingCycleConfiguration = matrixWithDisplayNamePrice.invoicingCycleConfiguration + billableMetric = matrixWithDisplayNamePrice.billableMetric + fixedPriceQuantity = matrixWithDisplayNamePrice.fixedPriceQuantity + planPhaseOrder = matrixWithDisplayNamePrice.planPhaseOrder + currency = matrixWithDisplayNamePrice.currency + conversionRate = matrixWithDisplayNamePrice.conversionRate + item = matrixWithDisplayNamePrice.item + creditAllocation = matrixWithDisplayNamePrice.creditAllocation + discount = matrixWithDisplayNamePrice.discount + minimum = matrixWithDisplayNamePrice.minimum + minimumAmount = matrixWithDisplayNamePrice.minimumAmount + maximum = matrixWithDisplayNamePrice.maximum + maximumAmount = matrixWithDisplayNamePrice.maximumAmount + matrixWithDisplayNameConfig = matrixWithDisplayNamePrice.matrixWithDisplayNameConfig + additionalProperties = + matrixWithDisplayNamePrice.additionalProperties.toMutableMap() } /** @@ -38459,62 +40200,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -38523,8 +40246,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -38532,8 +40253,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -38541,80 +40260,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -38623,26 +40320,29 @@ private constructor( matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig ) = matrixWithDisplayNameConfig(JsonField.of(matrixWithDisplayNameConfig)) - @JsonProperty("matrix_with_display_name_config") - @ExcludeMissing fun matrixWithDisplayNameConfig( matrixWithDisplayNameConfig: JsonField ) = apply { this.matrixWithDisplayNameConfig = matrixWithDisplayNameConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixWithDisplayNamePrice = MatrixWithDisplayNamePrice( metadata, @@ -38672,16 +40372,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -38690,6 +40391,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -38711,24 +40414,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -38736,6 +40436,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -38757,17 +40465,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -38780,6 +40491,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -38803,34 +40516,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -38838,6 +40547,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -39002,17 +40719,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -39025,6 +40745,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -39048,34 +40770,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -39083,6 +40800,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -39109,17 +40834,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -39132,6 +40860,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -39156,34 +40886,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -39191,6 +40917,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -39274,17 +41008,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -39297,6 +41034,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -39320,31 +41059,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -39352,6 +41086,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -39378,19 +41120,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MatrixWithDisplayNameConfig.Builder::class) @NoAutoDetect class MatrixWithDisplayNameConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MatrixWithDisplayNameConfig = apply { if (!validated) { validated = true @@ -39411,17 +41154,17 @@ private constructor( @JvmSynthetic internal fun from(matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig) = apply { - additionalProperties(matrixWithDisplayNameConfig.additionalProperties) + additionalProperties = + matrixWithDisplayNameConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -39429,6 +41172,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixWithDisplayNameConfig = MatrixWithDisplayNameConfig(additionalProperties.toImmutable()) } @@ -39451,17 +41202,20 @@ private constructor( "MatrixWithDisplayNameConfig{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -39487,6 +41241,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -39510,9 +41266,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -39520,8 +41276,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -39537,20 +41291,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -39558,6 +41309,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -39589,19 +41348,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -39621,17 +41381,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -39639,6 +41398,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -39659,17 +41426,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -39695,6 +41465,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -39718,9 +41490,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -39728,8 +41500,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -39745,20 +41515,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -39766,6 +41533,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -39918,38 +41693,81 @@ private constructor( "MatrixWithDisplayNamePrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, matrixWithDisplayNameConfig=$matrixWithDisplayNameConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BulkWithProrationPrice.Builder::class) @NoAutoDetect class BulkWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val bulkWithProrationConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("bulk_with_proration_config") + @ExcludeMissing + private val bulkWithProrationConfig: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -40079,6 +41897,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BulkWithProrationPrice = apply { if (!validated) { metadata().validate() @@ -40147,31 +41967,30 @@ private constructor( @JvmSynthetic internal fun from(bulkWithProrationPrice: BulkWithProrationPrice) = apply { - this.metadata = bulkWithProrationPrice.metadata - this.id = bulkWithProrationPrice.id - this.name = bulkWithProrationPrice.name - this.externalPriceId = bulkWithProrationPrice.externalPriceId - this.priceType = bulkWithProrationPrice.priceType - this.modelType = bulkWithProrationPrice.modelType - this.createdAt = bulkWithProrationPrice.createdAt - this.cadence = bulkWithProrationPrice.cadence - this.billingCycleConfiguration = bulkWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - bulkWithProrationPrice.invoicingCycleConfiguration - this.billableMetric = bulkWithProrationPrice.billableMetric - this.fixedPriceQuantity = bulkWithProrationPrice.fixedPriceQuantity - this.planPhaseOrder = bulkWithProrationPrice.planPhaseOrder - this.currency = bulkWithProrationPrice.currency - this.conversionRate = bulkWithProrationPrice.conversionRate - this.item = bulkWithProrationPrice.item - this.creditAllocation = bulkWithProrationPrice.creditAllocation - this.discount = bulkWithProrationPrice.discount - this.minimum = bulkWithProrationPrice.minimum - this.minimumAmount = bulkWithProrationPrice.minimumAmount - this.maximum = bulkWithProrationPrice.maximum - this.maximumAmount = bulkWithProrationPrice.maximumAmount - this.bulkWithProrationConfig = bulkWithProrationPrice.bulkWithProrationConfig - additionalProperties(bulkWithProrationPrice.additionalProperties) + metadata = bulkWithProrationPrice.metadata + id = bulkWithProrationPrice.id + name = bulkWithProrationPrice.name + externalPriceId = bulkWithProrationPrice.externalPriceId + priceType = bulkWithProrationPrice.priceType + modelType = bulkWithProrationPrice.modelType + createdAt = bulkWithProrationPrice.createdAt + cadence = bulkWithProrationPrice.cadence + billingCycleConfiguration = bulkWithProrationPrice.billingCycleConfiguration + invoicingCycleConfiguration = bulkWithProrationPrice.invoicingCycleConfiguration + billableMetric = bulkWithProrationPrice.billableMetric + fixedPriceQuantity = bulkWithProrationPrice.fixedPriceQuantity + planPhaseOrder = bulkWithProrationPrice.planPhaseOrder + currency = bulkWithProrationPrice.currency + conversionRate = bulkWithProrationPrice.conversionRate + item = bulkWithProrationPrice.item + creditAllocation = bulkWithProrationPrice.creditAllocation + discount = bulkWithProrationPrice.discount + minimum = bulkWithProrationPrice.minimum + minimumAmount = bulkWithProrationPrice.minimumAmount + maximum = bulkWithProrationPrice.maximum + maximumAmount = bulkWithProrationPrice.maximumAmount + bulkWithProrationConfig = bulkWithProrationPrice.bulkWithProrationConfig + additionalProperties = bulkWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -40186,62 +42005,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -40250,8 +42051,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -40259,8 +42058,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -40268,80 +42065,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -40349,26 +42124,29 @@ private constructor( fun bulkWithProrationConfig(bulkWithProrationConfig: BulkWithProrationConfig) = bulkWithProrationConfig(JsonField.of(bulkWithProrationConfig)) - @JsonProperty("bulk_with_proration_config") - @ExcludeMissing fun bulkWithProrationConfig( bulkWithProrationConfig: JsonField ) = apply { this.bulkWithProrationConfig = bulkWithProrationConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkWithProrationPrice = BulkWithProrationPrice( metadata, @@ -40398,16 +42176,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -40416,6 +42195,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -40437,24 +42218,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -40462,6 +42240,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -40483,17 +42269,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -40506,6 +42295,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -40529,34 +42320,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -40564,6 +42351,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -40647,19 +42442,20 @@ private constructor( "BillingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BulkWithProrationConfig.Builder::class) @NoAutoDetect class BulkWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BulkWithProrationConfig = apply { if (!validated) { validated = true @@ -40679,17 +42475,17 @@ private constructor( @JvmSynthetic internal fun from(bulkWithProrationConfig: BulkWithProrationConfig) = apply { - additionalProperties(bulkWithProrationConfig.additionalProperties) + additionalProperties = + bulkWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -40697,6 +42493,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkWithProrationConfig = BulkWithProrationConfig(additionalProperties.toImmutable()) } @@ -40800,17 +42604,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -40823,6 +42630,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -40846,34 +42655,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -40881,6 +42685,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -40907,17 +42719,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -40930,6 +42745,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -40954,34 +42771,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -40989,6 +42802,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -41072,17 +42893,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -41095,6 +42919,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -41118,31 +42944,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -41150,6 +42971,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -41176,17 +43005,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -41212,6 +43044,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -41235,9 +43069,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -41245,8 +43079,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -41262,20 +43094,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -41283,6 +43112,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -41314,19 +43151,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -41346,17 +43184,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -41364,6 +43201,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -41384,17 +43229,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -41420,6 +43268,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -41443,9 +43293,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -41453,8 +43303,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -41470,20 +43318,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -41491,6 +43336,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, @@ -41643,38 +43496,82 @@ private constructor( "BulkWithProrationPrice{metadata=$metadata, id=$id, name=$name, externalPriceId=$externalPriceId, priceType=$priceType, modelType=$modelType, createdAt=$createdAt, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, billableMetric=$billableMetric, fixedPriceQuantity=$fixedPriceQuantity, planPhaseOrder=$planPhaseOrder, currency=$currency, conversionRate=$conversionRate, item=$item, creditAllocation=$creditAllocation, discount=$discount, minimum=$minimum, minimumAmount=$minimumAmount, maximum=$maximum, maximumAmount=$maximumAmount, bulkWithProrationConfig=$bulkWithProrationConfig, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedTieredPackagePrice.Builder::class) @NoAutoDetect class GroupedTieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val name: JsonField, - private val externalPriceId: JsonField, - private val priceType: JsonField, - private val modelType: JsonField, - private val createdAt: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val billableMetric: JsonField, - private val fixedPriceQuantity: JsonField, - private val planPhaseOrder: JsonField, - private val currency: JsonField, - private val conversionRate: JsonField, - private val item: JsonField, - private val creditAllocation: JsonField, - private val discount: JsonField, - private val minimum: JsonField, - private val minimumAmount: JsonField, - private val maximum: JsonField, - private val maximumAmount: JsonField, - private val groupedTieredPackageConfig: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonProperty("external_price_id") + @ExcludeMissing + private val externalPriceId: JsonField = JsonMissing.of(), + @JsonProperty("price_type") + @ExcludeMissing + private val priceType: JsonField = JsonMissing.of(), + @JsonProperty("model_type") + @ExcludeMissing + private val modelType: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("cadence") + @ExcludeMissing + private val cadence: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_configuration") + @ExcludeMissing + private val billingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_cycle_configuration") + @ExcludeMissing + private val invoicingCycleConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("fixed_price_quantity") + @ExcludeMissing + private val fixedPriceQuantity: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("conversion_rate") + @ExcludeMissing + private val conversionRate: JsonField = JsonMissing.of(), + @JsonProperty("item") @ExcludeMissing private val item: JsonField = JsonMissing.of(), + @JsonProperty("credit_allocation") + @ExcludeMissing + private val creditAllocation: JsonField = JsonMissing.of(), + @JsonProperty("discount") + @ExcludeMissing + private val discount: JsonField = JsonMissing.of(), + @JsonProperty("minimum") + @ExcludeMissing + private val minimum: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("maximum") + @ExcludeMissing + private val maximum: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("grouped_tiered_package_config") + @ExcludeMissing + private val groupedTieredPackageConfig: JsonField = + JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an * empty dictionary. Individual keys can be removed by setting the value to `null`, and the @@ -41804,6 +43701,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedTieredPackagePrice = apply { if (!validated) { metadata().validate() @@ -41872,32 +43771,30 @@ private constructor( @JvmSynthetic internal fun from(groupedTieredPackagePrice: GroupedTieredPackagePrice) = apply { - this.metadata = groupedTieredPackagePrice.metadata - this.id = groupedTieredPackagePrice.id - this.name = groupedTieredPackagePrice.name - this.externalPriceId = groupedTieredPackagePrice.externalPriceId - this.priceType = groupedTieredPackagePrice.priceType - this.modelType = groupedTieredPackagePrice.modelType - this.createdAt = groupedTieredPackagePrice.createdAt - this.cadence = groupedTieredPackagePrice.cadence - this.billingCycleConfiguration = groupedTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - groupedTieredPackagePrice.invoicingCycleConfiguration - this.billableMetric = groupedTieredPackagePrice.billableMetric - this.fixedPriceQuantity = groupedTieredPackagePrice.fixedPriceQuantity - this.planPhaseOrder = groupedTieredPackagePrice.planPhaseOrder - this.currency = groupedTieredPackagePrice.currency - this.conversionRate = groupedTieredPackagePrice.conversionRate - this.item = groupedTieredPackagePrice.item - this.creditAllocation = groupedTieredPackagePrice.creditAllocation - this.discount = groupedTieredPackagePrice.discount - this.minimum = groupedTieredPackagePrice.minimum - this.minimumAmount = groupedTieredPackagePrice.minimumAmount - this.maximum = groupedTieredPackagePrice.maximum - this.maximumAmount = groupedTieredPackagePrice.maximumAmount - this.groupedTieredPackageConfig = - groupedTieredPackagePrice.groupedTieredPackageConfig - additionalProperties(groupedTieredPackagePrice.additionalProperties) + metadata = groupedTieredPackagePrice.metadata + id = groupedTieredPackagePrice.id + name = groupedTieredPackagePrice.name + externalPriceId = groupedTieredPackagePrice.externalPriceId + priceType = groupedTieredPackagePrice.priceType + modelType = groupedTieredPackagePrice.modelType + createdAt = groupedTieredPackagePrice.createdAt + cadence = groupedTieredPackagePrice.cadence + billingCycleConfiguration = groupedTieredPackagePrice.billingCycleConfiguration + invoicingCycleConfiguration = groupedTieredPackagePrice.invoicingCycleConfiguration + billableMetric = groupedTieredPackagePrice.billableMetric + fixedPriceQuantity = groupedTieredPackagePrice.fixedPriceQuantity + planPhaseOrder = groupedTieredPackagePrice.planPhaseOrder + currency = groupedTieredPackagePrice.currency + conversionRate = groupedTieredPackagePrice.conversionRate + item = groupedTieredPackagePrice.item + creditAllocation = groupedTieredPackagePrice.creditAllocation + discount = groupedTieredPackagePrice.discount + minimum = groupedTieredPackagePrice.minimum + minimumAmount = groupedTieredPackagePrice.minimumAmount + maximum = groupedTieredPackagePrice.maximum + maximumAmount = groupedTieredPackagePrice.maximumAmount + groupedTieredPackageConfig = groupedTieredPackagePrice.groupedTieredPackageConfig + additionalProperties = groupedTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -41912,62 +43809,44 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and * the entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun externalPriceId(externalPriceId: String) = externalPriceId(JsonField.of(externalPriceId)) - @JsonProperty("external_price_id") - @ExcludeMissing fun externalPriceId(externalPriceId: JsonField) = apply { this.externalPriceId = externalPriceId } fun priceType(priceType: PriceType) = priceType(JsonField.of(priceType)) - @JsonProperty("price_type") - @ExcludeMissing fun priceType(priceType: JsonField) = apply { this.priceType = priceType } fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - @JsonProperty("model_type") - @ExcludeMissing fun modelType(modelType: JsonField) = apply { this.modelType = modelType } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - @JsonProperty("cadence") - @ExcludeMissing fun cadence(cadence: JsonField) = apply { this.cadence = cadence } fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing fun billingCycleConfiguration( billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } @@ -41976,8 +43855,6 @@ private constructor( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing fun invoicingCycleConfiguration( invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } @@ -41985,8 +43862,6 @@ private constructor( fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } @@ -41994,80 +43869,58 @@ private constructor( fun fixedPriceQuantity(fixedPriceQuantity: Double) = fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - @JsonProperty("fixed_price_quantity") - @ExcludeMissing fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { this.fixedPriceQuantity = fixedPriceQuantity } fun planPhaseOrder(planPhaseOrder: Long) = planPhaseOrder(JsonField.of(planPhaseOrder)) - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun conversionRate(conversionRate: Double) = conversionRate(JsonField.of(conversionRate)) - @JsonProperty("conversion_rate") - @ExcludeMissing fun conversionRate(conversionRate: JsonField) = apply { this.conversionRate = conversionRate } fun item(item: Item) = item(JsonField.of(item)) - @JsonProperty("item") - @ExcludeMissing fun item(item: JsonField) = apply { this.item = item } fun creditAllocation(creditAllocation: CreditAllocation) = creditAllocation(JsonField.of(creditAllocation)) - @JsonProperty("credit_allocation") - @ExcludeMissing fun creditAllocation(creditAllocation: JsonField) = apply { this.creditAllocation = creditAllocation } fun discount(discount: Discount) = discount(JsonField.of(discount)) - @JsonProperty("discount") - @ExcludeMissing fun discount(discount: JsonField) = apply { this.discount = discount } fun minimum(minimum: Minimum) = minimum(JsonField.of(minimum)) - @JsonProperty("minimum") - @ExcludeMissing fun minimum(minimum: JsonField) = apply { this.minimum = minimum } fun minimumAmount(minimumAmount: String) = minimumAmount(JsonField.of(minimumAmount)) - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun maximum(maximum: Maximum) = maximum(JsonField.of(maximum)) - @JsonProperty("maximum") - @ExcludeMissing fun maximum(maximum: JsonField) = apply { this.maximum = maximum } fun maximumAmount(maximumAmount: String) = maximumAmount(JsonField.of(maximumAmount)) - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -42075,26 +43928,29 @@ private constructor( fun groupedTieredPackageConfig(groupedTieredPackageConfig: GroupedTieredPackageConfig) = groupedTieredPackageConfig(JsonField.of(groupedTieredPackageConfig)) - @JsonProperty("grouped_tiered_package_config") - @ExcludeMissing fun groupedTieredPackageConfig( groupedTieredPackageConfig: JsonField ) = apply { this.groupedTieredPackageConfig = groupedTieredPackageConfig } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedTieredPackagePrice = GroupedTieredPackagePrice( metadata, @@ -42124,16 +43980,17 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") @JsonProperty("id") @ExcludeMissing fun _id() = id @@ -42142,6 +43999,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -42163,24 +44022,21 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -42188,6 +44044,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric(id, additionalProperties.toImmutable()) } @@ -42209,17 +44073,20 @@ private constructor( "BillableMetric{id=$id, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -42232,6 +44099,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleConfiguration = apply { if (!validated) { duration() @@ -42255,34 +44124,30 @@ private constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -42290,6 +44155,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( duration, @@ -42454,17 +44327,20 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = CreditAllocation.Builder::class) @NoAutoDetect class CreditAllocation + @JsonCreator private constructor( - private val currency: JsonField, - private val allowsRollover: JsonField, - private val additionalProperties: Map, + @JsonProperty("currency") + @ExcludeMissing + private val currency: JsonField = JsonMissing.of(), + @JsonProperty("allows_rollover") + @ExcludeMissing + private val allowsRollover: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun currency(): String = currency.getRequired("currency") fun allowsRollover(): Boolean = allowsRollover.getRequired("allows_rollover") @@ -42477,6 +44353,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): CreditAllocation = apply { if (!validated) { currency() @@ -42500,34 +44378,29 @@ private constructor( @JvmSynthetic internal fun from(creditAllocation: CreditAllocation) = apply { - this.currency = creditAllocation.currency - this.allowsRollover = creditAllocation.allowsRollover - additionalProperties(creditAllocation.additionalProperties) + currency = creditAllocation.currency + allowsRollover = creditAllocation.allowsRollover + additionalProperties = creditAllocation.additionalProperties.toMutableMap() } fun currency(currency: String) = currency(JsonField.of(currency)) - @JsonProperty("currency") - @ExcludeMissing fun currency(currency: JsonField) = apply { this.currency = currency } fun allowsRollover(allowsRollover: Boolean) = allowsRollover(JsonField.of(allowsRollover)) - @JsonProperty("allows_rollover") - @ExcludeMissing fun allowsRollover(allowsRollover: JsonField) = apply { this.allowsRollover = allowsRollover } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -42535,6 +44408,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): CreditAllocation = CreditAllocation( currency, @@ -42561,19 +44442,20 @@ private constructor( "CreditAllocation{currency=$currency, allowsRollover=$allowsRollover, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedTieredPackageConfig.Builder::class) @NoAutoDetect class GroupedTieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedTieredPackageConfig = apply { if (!validated) { validated = true @@ -42593,17 +44475,17 @@ private constructor( @JvmSynthetic internal fun from(groupedTieredPackageConfig: GroupedTieredPackageConfig) = apply { - additionalProperties(groupedTieredPackageConfig.additionalProperties) + additionalProperties = + groupedTieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -42611,6 +44493,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedTieredPackageConfig = GroupedTieredPackageConfig(additionalProperties.toImmutable()) } @@ -42633,17 +44523,20 @@ private constructor( "GroupedTieredPackageConfig{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") + @ExcludeMissing + private val duration: JsonField = JsonMissing.of(), + @JsonProperty("duration_unit") + @ExcludeMissing + private val durationUnit: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun duration(): Long = duration.getRequired("duration") fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") @@ -42656,6 +44549,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): InvoicingCycleConfiguration = apply { if (!validated) { duration() @@ -42680,34 +44575,30 @@ private constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } fun duration(duration: Long) = duration(JsonField.of(duration)) - @JsonProperty("duration") - @ExcludeMissing fun duration(duration: JsonField) = apply { this.duration = duration } fun durationUnit(durationUnit: DurationUnit) = durationUnit(JsonField.of(durationUnit)) - @JsonProperty("duration_unit") - @ExcludeMissing fun durationUnit(durationUnit: JsonField) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -42715,6 +44606,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( duration, @@ -42798,17 +44697,20 @@ private constructor( "InvoicingCycleConfiguration{duration=$duration, durationUnit=$durationUnit, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Item.Builder::class) @NoAutoDetect class Item + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -42821,6 +44723,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Item = apply { if (!validated) { id() @@ -42844,31 +44748,26 @@ private constructor( @JvmSynthetic internal fun from(item: Item) = apply { - this.id = item.id - this.name = item.name - additionalProperties(item.additionalProperties) + id = item.id + name = item.name + additionalProperties = item.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -42876,6 +44775,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Item = Item( id, @@ -42902,17 +44809,20 @@ private constructor( "Item{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Maximum.Builder::class) @NoAutoDetect class Maximum + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Maximum amount applied */ fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") @@ -42938,6 +44848,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Maximum = apply { if (!validated) { maximumAmount() @@ -42961,9 +44873,9 @@ private constructor( @JvmSynthetic internal fun from(maximum: Maximum) = apply { - this.maximumAmount = maximum.maximumAmount - this.appliesToPriceIds = maximum.appliesToPriceIds - additionalProperties(maximum.additionalProperties) + maximumAmount = maximum.maximumAmount + appliesToPriceIds = maximum.appliesToPriceIds + additionalProperties = maximum.additionalProperties.toMutableMap() } /** Maximum amount applied */ @@ -42971,8 +44883,6 @@ private constructor( maximumAmount(JsonField.of(maximumAmount)) /** Maximum amount applied */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } @@ -42988,20 +44898,17 @@ private constructor( * List of price_ids that this maximum amount applies to. For plan/plan phase * maximums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -43009,6 +44916,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Maximum = Maximum( maximumAmount, @@ -43040,19 +44955,20 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -43072,17 +44988,16 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -43090,6 +45005,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -43110,17 +45033,20 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Minimum.Builder::class) @NoAutoDetect class Minimum + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val appliesToPriceIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Minimum amount applied */ fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") @@ -43146,6 +45072,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Minimum = apply { if (!validated) { minimumAmount() @@ -43169,9 +45097,9 @@ private constructor( @JvmSynthetic internal fun from(minimum: Minimum) = apply { - this.minimumAmount = minimum.minimumAmount - this.appliesToPriceIds = minimum.appliesToPriceIds - additionalProperties(minimum.additionalProperties) + minimumAmount = minimum.minimumAmount + appliesToPriceIds = minimum.appliesToPriceIds + additionalProperties = minimum.additionalProperties.toMutableMap() } /** Minimum amount applied */ @@ -43179,8 +45107,6 @@ private constructor( minimumAmount(JsonField.of(minimumAmount)) /** Minimum amount applied */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -43196,20 +45122,17 @@ private constructor( * List of price_ids that this minimum amount applies to. For plan/plan phase * minimums, this can be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -43217,6 +45140,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Minimum = Minimum( minimumAmount, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceCreateParams.kt index c77d88a6..9669c23e 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceCreateParams.kt @@ -23,6 +23,7 @@ import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects @@ -1999,26 +2000,29 @@ constructor( ) } - @JsonDeserialize(builder = NewFloatingUnitPrice.Builder::class) @NoAutoDetect class NewFloatingUnitPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val unitConfig: UnitConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_config") private val unitConfig: UnitConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -2026,56 +2030,63 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("unit_config") fun unitConfig(): UnitConfig? = unitConfig + @JsonProperty("unit_config") fun unitConfig(): UnitConfig = unitConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -2109,22 +2120,22 @@ constructor( @JvmSynthetic internal fun from(newFloatingUnitPrice: NewFloatingUnitPrice) = apply { - this.metadata = newFloatingUnitPrice.metadata - this.externalPriceId = newFloatingUnitPrice.externalPriceId - this.name = newFloatingUnitPrice.name - this.billableMetricId = newFloatingUnitPrice.billableMetricId - this.itemId = newFloatingUnitPrice.itemId - this.billedInAdvance = newFloatingUnitPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingUnitPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingUnitPrice.invoiceGroupingKey - this.cadence = newFloatingUnitPrice.cadence - this.billingCycleConfiguration = newFloatingUnitPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = newFloatingUnitPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingUnitPrice.conversionRate - this.modelType = newFloatingUnitPrice.modelType - this.unitConfig = newFloatingUnitPrice.unitConfig - this.currency = newFloatingUnitPrice.currency - additionalProperties(newFloatingUnitPrice.additionalProperties) + metadata = newFloatingUnitPrice.metadata + externalPriceId = newFloatingUnitPrice.externalPriceId + name = newFloatingUnitPrice.name + billableMetricId = newFloatingUnitPrice.billableMetricId + itemId = newFloatingUnitPrice.itemId + billedInAdvance = newFloatingUnitPrice.billedInAdvance + fixedPriceQuantity = newFloatingUnitPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingUnitPrice.invoiceGroupingKey + cadence = newFloatingUnitPrice.cadence + billingCycleConfiguration = newFloatingUnitPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingUnitPrice.invoicingCycleConfiguration + conversionRate = newFloatingUnitPrice.conversionRate + modelType = newFloatingUnitPrice.modelType + unitConfig = newFloatingUnitPrice.unitConfig + currency = newFloatingUnitPrice.currency + additionalProperties = newFloatingUnitPrice.additionalProperties.toMutableMap() } /** @@ -2132,34 +2143,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -2167,25 +2174,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -2195,41 +2198,41 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("unit_config") fun unitConfig(unitConfig: UnitConfig) = apply { this.unitConfig = unitConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingUnitPrice = NewFloatingUnitPrice( metadata, @@ -2383,16 +2386,17 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitConfig.Builder::class) @NoAutoDetect class UnitConfig + @JsonCreator private constructor( - private val unitAmount: String?, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Rate per unit of usage */ - @JsonProperty("unit_amount") fun unitAmount(): String? = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing @@ -2412,22 +2416,20 @@ constructor( @JvmSynthetic internal fun from(unitConfig: UnitConfig) = apply { - this.unitAmount = unitConfig.unitAmount - additionalProperties(unitConfig.additionalProperties) + unitAmount = unitConfig.unitAmount + additionalProperties = unitConfig.additionalProperties.toMutableMap() } /** Rate per unit of usage */ - @JsonProperty("unit_amount") fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2435,6 +2437,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitConfig = UnitConfig( checkNotNull(unitAmount) { "`unitAmount` is required but was not set" }, @@ -2461,20 +2471,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -2495,29 +2506,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2525,6 +2534,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -2612,20 +2629,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -2647,29 +2665,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2677,6 +2693,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -2765,11 +2789,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -2789,17 +2814,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2807,6 +2831,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -2845,26 +2877,29 @@ constructor( "NewFloatingUnitPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitConfig=$unitConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingPackagePrice.Builder::class) @NoAutoDetect class NewFloatingPackagePrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val packageConfig: PackageConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_config") private val packageConfig: PackageConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -2872,56 +2907,63 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("package_config") fun packageConfig(): PackageConfig? = packageConfig + @JsonProperty("package_config") fun packageConfig(): PackageConfig = packageConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -2955,23 +2997,22 @@ constructor( @JvmSynthetic internal fun from(newFloatingPackagePrice: NewFloatingPackagePrice) = apply { - this.metadata = newFloatingPackagePrice.metadata - this.externalPriceId = newFloatingPackagePrice.externalPriceId - this.name = newFloatingPackagePrice.name - this.billableMetricId = newFloatingPackagePrice.billableMetricId - this.itemId = newFloatingPackagePrice.itemId - this.billedInAdvance = newFloatingPackagePrice.billedInAdvance - this.fixedPriceQuantity = newFloatingPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingPackagePrice.invoiceGroupingKey - this.cadence = newFloatingPackagePrice.cadence - this.billingCycleConfiguration = newFloatingPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newFloatingPackagePrice.invoicingCycleConfiguration - this.conversionRate = newFloatingPackagePrice.conversionRate - this.modelType = newFloatingPackagePrice.modelType - this.packageConfig = newFloatingPackagePrice.packageConfig - this.currency = newFloatingPackagePrice.currency - additionalProperties(newFloatingPackagePrice.additionalProperties) + metadata = newFloatingPackagePrice.metadata + externalPriceId = newFloatingPackagePrice.externalPriceId + name = newFloatingPackagePrice.name + billableMetricId = newFloatingPackagePrice.billableMetricId + itemId = newFloatingPackagePrice.itemId + billedInAdvance = newFloatingPackagePrice.billedInAdvance + fixedPriceQuantity = newFloatingPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingPackagePrice.invoiceGroupingKey + cadence = newFloatingPackagePrice.cadence + billingCycleConfiguration = newFloatingPackagePrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingPackagePrice.invoicingCycleConfiguration + conversionRate = newFloatingPackagePrice.conversionRate + modelType = newFloatingPackagePrice.modelType + packageConfig = newFloatingPackagePrice.packageConfig + currency = newFloatingPackagePrice.currency + additionalProperties = newFloatingPackagePrice.additionalProperties.toMutableMap() } /** @@ -2979,34 +3020,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -3014,25 +3051,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -3042,43 +3075,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("package_config") fun packageConfig(packageConfig: PackageConfig) = apply { this.packageConfig = packageConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingPackagePrice = NewFloatingPackagePrice( metadata, @@ -3232,23 +3265,24 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageConfig.Builder::class) @NoAutoDetect class PackageConfig + @JsonCreator private constructor( - private val packageAmount: String?, - private val packageSize: Long?, - private val additionalProperties: Map, + @JsonProperty("package_amount") private val packageAmount: String, + @JsonProperty("package_size") private val packageSize: Long, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** A currency amount to rate usage by */ - @JsonProperty("package_amount") fun packageAmount(): String? = packageAmount + @JsonProperty("package_amount") fun packageAmount(): String = packageAmount /** * An integer amount to represent package size. For example, 1000 here would divide * usage by 1000 before multiplying by package_amount in rating */ - @JsonProperty("package_size") fun packageSize(): Long? = packageSize + @JsonProperty("package_size") fun packageSize(): Long = packageSize @JsonAnyGetter @ExcludeMissing @@ -3269,13 +3303,12 @@ constructor( @JvmSynthetic internal fun from(packageConfig: PackageConfig) = apply { - this.packageAmount = packageConfig.packageAmount - this.packageSize = packageConfig.packageSize - additionalProperties(packageConfig.additionalProperties) + packageAmount = packageConfig.packageAmount + packageSize = packageConfig.packageSize + additionalProperties = packageConfig.additionalProperties.toMutableMap() } /** A currency amount to rate usage by */ - @JsonProperty("package_amount") fun packageAmount(packageAmount: String) = apply { this.packageAmount = packageAmount } @@ -3284,17 +3317,15 @@ constructor( * An integer amount to represent package size. For example, 1000 here would divide * usage by 1000 before multiplying by package_amount in rating */ - @JsonProperty("package_size") fun packageSize(packageSize: Long) = apply { this.packageSize = packageSize } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3302,6 +3333,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageConfig = PackageConfig( checkNotNull(packageAmount) { @@ -3331,20 +3370,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -3365,29 +3405,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3395,6 +3433,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -3482,20 +3528,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -3517,29 +3564,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3547,6 +3592,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -3635,11 +3688,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -3659,17 +3713,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3677,6 +3730,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -3715,26 +3776,29 @@ constructor( "NewFloatingPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageConfig=$packageConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingMatrixPrice.Builder::class) @NoAutoDetect class NewFloatingMatrixPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val matrixConfig: MatrixConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_config") private val matrixConfig: MatrixConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -3742,56 +3806,63 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("matrix_config") fun matrixConfig(): MatrixConfig? = matrixConfig + @JsonProperty("matrix_config") fun matrixConfig(): MatrixConfig = matrixConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -3825,23 +3896,22 @@ constructor( @JvmSynthetic internal fun from(newFloatingMatrixPrice: NewFloatingMatrixPrice) = apply { - this.metadata = newFloatingMatrixPrice.metadata - this.externalPriceId = newFloatingMatrixPrice.externalPriceId - this.name = newFloatingMatrixPrice.name - this.billableMetricId = newFloatingMatrixPrice.billableMetricId - this.itemId = newFloatingMatrixPrice.itemId - this.billedInAdvance = newFloatingMatrixPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingMatrixPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingMatrixPrice.invoiceGroupingKey - this.cadence = newFloatingMatrixPrice.cadence - this.billingCycleConfiguration = newFloatingMatrixPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newFloatingMatrixPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingMatrixPrice.conversionRate - this.modelType = newFloatingMatrixPrice.modelType - this.matrixConfig = newFloatingMatrixPrice.matrixConfig - this.currency = newFloatingMatrixPrice.currency - additionalProperties(newFloatingMatrixPrice.additionalProperties) + metadata = newFloatingMatrixPrice.metadata + externalPriceId = newFloatingMatrixPrice.externalPriceId + name = newFloatingMatrixPrice.name + billableMetricId = newFloatingMatrixPrice.billableMetricId + itemId = newFloatingMatrixPrice.itemId + billedInAdvance = newFloatingMatrixPrice.billedInAdvance + fixedPriceQuantity = newFloatingMatrixPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingMatrixPrice.invoiceGroupingKey + cadence = newFloatingMatrixPrice.cadence + billingCycleConfiguration = newFloatingMatrixPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingMatrixPrice.invoicingCycleConfiguration + conversionRate = newFloatingMatrixPrice.conversionRate + modelType = newFloatingMatrixPrice.modelType + matrixConfig = newFloatingMatrixPrice.matrixConfig + currency = newFloatingMatrixPrice.currency + additionalProperties = newFloatingMatrixPrice.additionalProperties.toMutableMap() } /** @@ -3849,34 +3919,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -3884,25 +3950,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -3912,43 +3974,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("matrix_config") fun matrixConfig(matrixConfig: MatrixConfig) = apply { this.matrixConfig = matrixConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingMatrixPrice = NewFloatingMatrixPrice( metadata, @@ -4051,25 +4113,25 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensions: List?, - private val defaultUnitAmount: String?, - private val matrixValues: List?, - private val additionalProperties: Map, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("default_unit_amount") private val defaultUnitAmount: String, + @JsonProperty("matrix_values") private val matrixValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") fun dimensions(): List? = dimensions + @JsonProperty("dimensions") fun dimensions(): List = dimensions /** Default per unit rate for any usage not bucketed into a specified matrix_value */ - @JsonProperty("default_unit_amount") - fun defaultUnitAmount(): String? = defaultUnitAmount + @JsonProperty("default_unit_amount") fun defaultUnitAmount(): String = defaultUnitAmount /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") fun matrixValues(): List? = matrixValues + @JsonProperty("matrix_values") fun matrixValues(): List = matrixValues @JsonAnyGetter @ExcludeMissing @@ -4091,38 +4153,34 @@ constructor( @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensions = matrixConfig.dimensions - this.defaultUnitAmount = matrixConfig.defaultUnitAmount - this.matrixValues = matrixConfig.matrixValues - additionalProperties(matrixConfig.additionalProperties) + dimensions = matrixConfig.dimensions.toMutableList() + defaultUnitAmount = matrixConfig.defaultUnitAmount + matrixValues = matrixConfig.matrixValues.toMutableList() + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } /** * Default per unit rate for any usage not bucketed into a specified matrix_value */ - @JsonProperty("default_unit_amount") fun defaultUnitAmount(defaultUnitAmount: String) = apply { this.defaultUnitAmount = defaultUnitAmount } /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") fun matrixValues(matrixValues: List) = apply { this.matrixValues = matrixValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4130,6 +4188,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( checkNotNull(dimensions) { "`dimensions` is required but was not set" } @@ -4143,17 +4209,18 @@ constructor( ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: String?, - private val dimensionValues: List?, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonProperty("dimension_values") private val dimensionValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") fun unitAmount(): String? = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount /** * One or two matrix keys to filter usage to this Matrix value by. For example, @@ -4161,7 +4228,7 @@ constructor( * instance tier. */ @JsonProperty("dimension_values") - fun dimensionValues(): List? = dimensionValues + fun dimensionValues(): List = dimensionValues @JsonAnyGetter @ExcludeMissing @@ -4182,13 +4249,12 @@ constructor( @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues.toMutableList() + additionalProperties = matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } /** @@ -4196,19 +4262,17 @@ constructor( * ["region", "tier"] could be used to filter cloud usage by a cloud region and * an instance tier. */ - @JsonProperty("dimension_values") fun dimensionValues(dimensionValues: List) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4216,6 +4280,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( checkNotNull(unitAmount) { "`unitAmount` is required but was not set" }, @@ -4315,20 +4387,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -4349,29 +4422,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4379,6 +4450,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -4466,20 +4545,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -4501,29 +4581,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4531,6 +4609,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -4619,11 +4705,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -4643,17 +4730,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4661,6 +4747,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4699,26 +4793,30 @@ constructor( "NewFloatingMatrixPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixConfig=$matrixConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingMatrixWithAllocationPrice.Builder::class) @NoAutoDetect class NewFloatingMatrixWithAllocationPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val matrixWithAllocationConfig: MatrixWithAllocationConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_with_allocation_config") + private val matrixWithAllocationConfig: MatrixWithAllocationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -4726,57 +4824,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("matrix_with_allocation_config") - fun matrixWithAllocationConfig(): MatrixWithAllocationConfig? = matrixWithAllocationConfig + fun matrixWithAllocationConfig(): MatrixWithAllocationConfig = matrixWithAllocationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -4812,25 +4917,26 @@ constructor( internal fun from( newFloatingMatrixWithAllocationPrice: NewFloatingMatrixWithAllocationPrice ) = apply { - this.metadata = newFloatingMatrixWithAllocationPrice.metadata - this.externalPriceId = newFloatingMatrixWithAllocationPrice.externalPriceId - this.name = newFloatingMatrixWithAllocationPrice.name - this.billableMetricId = newFloatingMatrixWithAllocationPrice.billableMetricId - this.itemId = newFloatingMatrixWithAllocationPrice.itemId - this.billedInAdvance = newFloatingMatrixWithAllocationPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingMatrixWithAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingMatrixWithAllocationPrice.invoiceGroupingKey - this.cadence = newFloatingMatrixWithAllocationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingMatrixWithAllocationPrice.metadata + externalPriceId = newFloatingMatrixWithAllocationPrice.externalPriceId + name = newFloatingMatrixWithAllocationPrice.name + billableMetricId = newFloatingMatrixWithAllocationPrice.billableMetricId + itemId = newFloatingMatrixWithAllocationPrice.itemId + billedInAdvance = newFloatingMatrixWithAllocationPrice.billedInAdvance + fixedPriceQuantity = newFloatingMatrixWithAllocationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingMatrixWithAllocationPrice.invoiceGroupingKey + cadence = newFloatingMatrixWithAllocationPrice.cadence + billingCycleConfiguration = newFloatingMatrixWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingMatrixWithAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingMatrixWithAllocationPrice.conversionRate - this.modelType = newFloatingMatrixWithAllocationPrice.modelType - this.matrixWithAllocationConfig = + conversionRate = newFloatingMatrixWithAllocationPrice.conversionRate + modelType = newFloatingMatrixWithAllocationPrice.modelType + matrixWithAllocationConfig = newFloatingMatrixWithAllocationPrice.matrixWithAllocationConfig - this.currency = newFloatingMatrixWithAllocationPrice.currency - additionalProperties(newFloatingMatrixWithAllocationPrice.additionalProperties) + currency = newFloatingMatrixWithAllocationPrice.currency + additionalProperties = + newFloatingMatrixWithAllocationPrice.additionalProperties.toMutableMap() } /** @@ -4838,34 +4944,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -4873,25 +4975,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -4901,44 +4999,44 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("matrix_with_allocation_config") fun matrixWithAllocationConfig(matrixWithAllocationConfig: MatrixWithAllocationConfig) = apply { this.matrixWithAllocationConfig = matrixWithAllocationConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingMatrixWithAllocationPrice = NewFloatingMatrixWithAllocationPrice( metadata, @@ -5043,29 +5141,29 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixWithAllocationConfig.Builder::class) @NoAutoDetect class MatrixWithAllocationConfig + @JsonCreator private constructor( - private val dimensions: List?, - private val defaultUnitAmount: String?, - private val matrixValues: List?, - private val allocation: Double?, - private val additionalProperties: Map, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("default_unit_amount") private val defaultUnitAmount: String, + @JsonProperty("matrix_values") private val matrixValues: List, + @JsonProperty("allocation") private val allocation: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") fun dimensions(): List? = dimensions + @JsonProperty("dimensions") fun dimensions(): List = dimensions /** Default per unit rate for any usage not bucketed into a specified matrix_value */ - @JsonProperty("default_unit_amount") - fun defaultUnitAmount(): String? = defaultUnitAmount + @JsonProperty("default_unit_amount") fun defaultUnitAmount(): String = defaultUnitAmount /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") fun matrixValues(): List? = matrixValues + @JsonProperty("matrix_values") fun matrixValues(): List = matrixValues /** Allocation to be used to calculate the price */ - @JsonProperty("allocation") fun allocation(): Double? = allocation + @JsonProperty("allocation") fun allocation(): Double = allocation @JsonAnyGetter @ExcludeMissing @@ -5088,43 +5186,39 @@ constructor( @JvmSynthetic internal fun from(matrixWithAllocationConfig: MatrixWithAllocationConfig) = apply { - this.dimensions = matrixWithAllocationConfig.dimensions - this.defaultUnitAmount = matrixWithAllocationConfig.defaultUnitAmount - this.matrixValues = matrixWithAllocationConfig.matrixValues - this.allocation = matrixWithAllocationConfig.allocation - additionalProperties(matrixWithAllocationConfig.additionalProperties) + dimensions = matrixWithAllocationConfig.dimensions.toMutableList() + defaultUnitAmount = matrixWithAllocationConfig.defaultUnitAmount + matrixValues = matrixWithAllocationConfig.matrixValues.toMutableList() + allocation = matrixWithAllocationConfig.allocation + additionalProperties = + matrixWithAllocationConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } /** * Default per unit rate for any usage not bucketed into a specified matrix_value */ - @JsonProperty("default_unit_amount") fun defaultUnitAmount(defaultUnitAmount: String) = apply { this.defaultUnitAmount = defaultUnitAmount } /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") fun matrixValues(matrixValues: List) = apply { this.matrixValues = matrixValues } /** Allocation to be used to calculate the price */ - @JsonProperty("allocation") fun allocation(allocation: Double) = apply { this.allocation = allocation } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5132,6 +5226,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixWithAllocationConfig = MatrixWithAllocationConfig( checkNotNull(dimensions) { "`dimensions` is required but was not set" } @@ -5146,17 +5248,18 @@ constructor( ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: String?, - private val dimensionValues: List?, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonProperty("dimension_values") private val dimensionValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") fun unitAmount(): String? = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount /** * One or two matrix keys to filter usage to this Matrix value by. For example, @@ -5164,7 +5267,7 @@ constructor( * instance tier. */ @JsonProperty("dimension_values") - fun dimensionValues(): List? = dimensionValues + fun dimensionValues(): List = dimensionValues @JsonAnyGetter @ExcludeMissing @@ -5185,13 +5288,12 @@ constructor( @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues.toMutableList() + additionalProperties = matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } /** @@ -5199,19 +5301,17 @@ constructor( * ["region", "tier"] could be used to filter cloud usage by a cloud region and * an instance tier. */ - @JsonProperty("dimension_values") fun dimensionValues(dimensionValues: List) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5219,6 +5319,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( checkNotNull(unitAmount) { "`unitAmount` is required but was not set" }, @@ -5318,20 +5426,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -5352,29 +5461,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5382,6 +5489,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -5469,20 +5584,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -5504,29 +5620,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5534,6 +5648,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -5622,11 +5744,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -5646,17 +5769,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5664,6 +5786,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -5702,26 +5832,29 @@ constructor( "NewFloatingMatrixWithAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixWithAllocationConfig=$matrixWithAllocationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredPrice.Builder::class) @NoAutoDetect class NewFloatingTieredPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val tieredConfig: TieredConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_config") private val tieredConfig: TieredConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -5729,56 +5862,63 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("tiered_config") fun tieredConfig(): TieredConfig? = tieredConfig + @JsonProperty("tiered_config") fun tieredConfig(): TieredConfig = tieredConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -5812,23 +5952,22 @@ constructor( @JvmSynthetic internal fun from(newFloatingTieredPrice: NewFloatingTieredPrice) = apply { - this.metadata = newFloatingTieredPrice.metadata - this.externalPriceId = newFloatingTieredPrice.externalPriceId - this.name = newFloatingTieredPrice.name - this.billableMetricId = newFloatingTieredPrice.billableMetricId - this.itemId = newFloatingTieredPrice.itemId - this.billedInAdvance = newFloatingTieredPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingTieredPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingTieredPrice.invoiceGroupingKey - this.cadence = newFloatingTieredPrice.cadence - this.billingCycleConfiguration = newFloatingTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newFloatingTieredPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredPrice.conversionRate - this.modelType = newFloatingTieredPrice.modelType - this.tieredConfig = newFloatingTieredPrice.tieredConfig - this.currency = newFloatingTieredPrice.currency - additionalProperties(newFloatingTieredPrice.additionalProperties) + metadata = newFloatingTieredPrice.metadata + externalPriceId = newFloatingTieredPrice.externalPriceId + name = newFloatingTieredPrice.name + billableMetricId = newFloatingTieredPrice.billableMetricId + itemId = newFloatingTieredPrice.itemId + billedInAdvance = newFloatingTieredPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredPrice.invoiceGroupingKey + cadence = newFloatingTieredPrice.cadence + billingCycleConfiguration = newFloatingTieredPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingTieredPrice.invoicingCycleConfiguration + conversionRate = newFloatingTieredPrice.conversionRate + modelType = newFloatingTieredPrice.modelType + tieredConfig = newFloatingTieredPrice.tieredConfig + currency = newFloatingTieredPrice.currency + additionalProperties = newFloatingTieredPrice.additionalProperties.toMutableMap() } /** @@ -5836,34 +5975,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -5871,25 +6006,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -5899,43 +6030,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_config") fun tieredConfig(tieredConfig: TieredConfig) = apply { this.tieredConfig = tieredConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredPrice = NewFloatingTieredPrice( metadata, @@ -6089,16 +6220,17 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredConfig.Builder::class) @NoAutoDetect class TieredConfig + @JsonCreator private constructor( - private val tiers: List?, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") fun tiers(): List? = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing @@ -6118,21 +6250,20 @@ constructor( @JvmSynthetic internal fun from(tieredConfig: TieredConfig) = apply { - this.tiers = tieredConfig.tiers - additionalProperties(tieredConfig.additionalProperties) + tiers = tieredConfig.tiers.toMutableList() + additionalProperties = tieredConfig.additionalProperties.toMutableMap() } /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") fun tiers(tiers: List) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6140,6 +6271,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredConfig = TieredConfig( checkNotNull(tiers) { "`tiers` is required but was not set" }.toImmutable(), @@ -6147,24 +6286,26 @@ constructor( ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val firstUnit: Double?, - private val lastUnit: Double?, - private val unitAmount: String?, - private val additionalProperties: Map, + @JsonProperty("first_unit") private val firstUnit: Double, + @JsonProperty("last_unit") private val lastUnit: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Inclusive tier starting value */ - @JsonProperty("first_unit") fun firstUnit(): Double? = firstUnit + @JsonProperty("first_unit") fun firstUnit(): Double = firstUnit /** Exclusive tier ending value. If null, this is treated as the last tier */ - @JsonProperty("last_unit") fun lastUnit(): Double? = lastUnit + @JsonProperty("last_unit") + fun lastUnit(): Optional = Optional.ofNullable(lastUnit) /** Amount per unit */ - @JsonProperty("unit_amount") fun unitAmount(): String? = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing @@ -6186,32 +6327,28 @@ constructor( @JvmSynthetic internal fun from(tier: Tier) = apply { - this.firstUnit = tier.firstUnit - this.lastUnit = tier.lastUnit - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + firstUnit = tier.firstUnit + lastUnit = tier.lastUnit + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - @JsonProperty("first_unit") fun firstUnit(firstUnit: Double) = apply { this.firstUnit = firstUnit } /** Exclusive tier ending value. If null, this is treated as the last tier */ - @JsonProperty("last_unit") fun lastUnit(lastUnit: Double) = apply { this.lastUnit = lastUnit } /** Amount per unit */ - @JsonProperty("unit_amount") fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6219,6 +6356,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( checkNotNull(firstUnit) { "`firstUnit` is required but was not set" }, @@ -6265,20 +6410,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -6299,29 +6445,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6329,6 +6473,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -6416,20 +6568,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -6451,29 +6604,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6481,6 +6632,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -6569,11 +6728,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -6593,17 +6753,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6611,6 +6770,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -6649,26 +6816,29 @@ constructor( "NewFloatingTieredPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredConfig=$tieredConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredBpsPrice.Builder::class) @NoAutoDetect class NewFloatingTieredBpsPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val tieredBpsConfig: TieredBpsConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_bps_config") private val tieredBpsConfig: TieredBpsConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -6676,56 +6846,63 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("tiered_bps_config") fun tieredBpsConfig(): TieredBpsConfig? = tieredBpsConfig + @JsonProperty("tiered_bps_config") fun tieredBpsConfig(): TieredBpsConfig = tieredBpsConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -6759,23 +6936,22 @@ constructor( @JvmSynthetic internal fun from(newFloatingTieredBpsPrice: NewFloatingTieredBpsPrice) = apply { - this.metadata = newFloatingTieredBpsPrice.metadata - this.externalPriceId = newFloatingTieredBpsPrice.externalPriceId - this.name = newFloatingTieredBpsPrice.name - this.billableMetricId = newFloatingTieredBpsPrice.billableMetricId - this.itemId = newFloatingTieredBpsPrice.itemId - this.billedInAdvance = newFloatingTieredBpsPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingTieredBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingTieredBpsPrice.invoiceGroupingKey - this.cadence = newFloatingTieredBpsPrice.cadence - this.billingCycleConfiguration = newFloatingTieredBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newFloatingTieredBpsPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredBpsPrice.conversionRate - this.modelType = newFloatingTieredBpsPrice.modelType - this.tieredBpsConfig = newFloatingTieredBpsPrice.tieredBpsConfig - this.currency = newFloatingTieredBpsPrice.currency - additionalProperties(newFloatingTieredBpsPrice.additionalProperties) + metadata = newFloatingTieredBpsPrice.metadata + externalPriceId = newFloatingTieredBpsPrice.externalPriceId + name = newFloatingTieredBpsPrice.name + billableMetricId = newFloatingTieredBpsPrice.billableMetricId + itemId = newFloatingTieredBpsPrice.itemId + billedInAdvance = newFloatingTieredBpsPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredBpsPrice.invoiceGroupingKey + cadence = newFloatingTieredBpsPrice.cadence + billingCycleConfiguration = newFloatingTieredBpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingTieredBpsPrice.invoicingCycleConfiguration + conversionRate = newFloatingTieredBpsPrice.conversionRate + modelType = newFloatingTieredBpsPrice.modelType + tieredBpsConfig = newFloatingTieredBpsPrice.tieredBpsConfig + currency = newFloatingTieredBpsPrice.currency + additionalProperties = newFloatingTieredBpsPrice.additionalProperties.toMutableMap() } /** @@ -6783,34 +6959,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -6818,25 +6990,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -6846,43 +7014,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_bps_config") fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = apply { this.tieredBpsConfig = tieredBpsConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredBpsPrice = NewFloatingTieredBpsPrice( metadata, @@ -7038,18 +7206,19 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredBpsConfig.Builder::class) @NoAutoDetect class TieredBpsConfig + @JsonCreator private constructor( - private val tiers: List?, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into specified tiers */ - @JsonProperty("tiers") fun tiers(): List? = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing @@ -7069,24 +7238,23 @@ constructor( @JvmSynthetic internal fun from(tieredBpsConfig: TieredBpsConfig) = apply { - this.tiers = tieredBpsConfig.tiers - additionalProperties(tieredBpsConfig.additionalProperties) + tiers = tieredBpsConfig.tiers.toMutableList() + additionalProperties = tieredBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into specified * tiers */ - @JsonProperty("tiers") fun tiers(tiers: List) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7094,6 +7262,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredBpsConfig = TieredBpsConfig( checkNotNull(tiers) { "`tiers` is required but was not set" }.toImmutable(), @@ -7101,28 +7277,31 @@ constructor( ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val minimumAmount: String?, - private val maximumAmount: String?, - private val bps: Double?, - private val perUnitMaximum: String?, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") fun minimumAmount(): String? = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** Exclusive tier ending value */ - @JsonProperty("maximum_amount") fun maximumAmount(): String? = maximumAmount + @JsonProperty("maximum_amount") + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Per-event basis point rate */ - @JsonProperty("bps") fun bps(): Double? = bps + @JsonProperty("bps") fun bps(): Double = bps /** Per unit maximum to charge */ - @JsonProperty("per_unit_maximum") fun perUnitMaximum(): String? = perUnitMaximum + @JsonProperty("per_unit_maximum") + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing @@ -7145,42 +7324,38 @@ constructor( @JvmSynthetic internal fun from(tier: Tier) = apply { - this.minimumAmount = tier.minimumAmount - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + minimumAmount = tier.minimumAmount + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** Exclusive tier ending value */ - @JsonProperty("maximum_amount") fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Per-event basis point rate */ - @JsonProperty("bps") fun bps(bps: Double) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** Per unit maximum to charge */ - @JsonProperty("per_unit_maximum") fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7188,6 +7363,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( checkNotNull(minimumAmount) { @@ -7237,20 +7420,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -7271,29 +7455,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7301,6 +7483,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -7388,20 +7578,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -7423,29 +7614,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7453,6 +7642,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -7541,11 +7738,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -7565,17 +7763,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7583,6 +7780,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -7621,26 +7826,29 @@ constructor( "NewFloatingTieredBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredBpsConfig=$tieredBpsConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingBpsPrice.Builder::class) @NoAutoDetect class NewFloatingBpsPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val bpsConfig: BpsConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bps_config") private val bpsConfig: BpsConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -7648,56 +7856,63 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bps_config") fun bpsConfig(): BpsConfig? = bpsConfig + @JsonProperty("bps_config") fun bpsConfig(): BpsConfig = bpsConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -7731,22 +7946,22 @@ constructor( @JvmSynthetic internal fun from(newFloatingBpsPrice: NewFloatingBpsPrice) = apply { - this.metadata = newFloatingBpsPrice.metadata - this.externalPriceId = newFloatingBpsPrice.externalPriceId - this.name = newFloatingBpsPrice.name - this.billableMetricId = newFloatingBpsPrice.billableMetricId - this.itemId = newFloatingBpsPrice.itemId - this.billedInAdvance = newFloatingBpsPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingBpsPrice.invoiceGroupingKey - this.cadence = newFloatingBpsPrice.cadence - this.billingCycleConfiguration = newFloatingBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = newFloatingBpsPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingBpsPrice.conversionRate - this.modelType = newFloatingBpsPrice.modelType - this.bpsConfig = newFloatingBpsPrice.bpsConfig - this.currency = newFloatingBpsPrice.currency - additionalProperties(newFloatingBpsPrice.additionalProperties) + metadata = newFloatingBpsPrice.metadata + externalPriceId = newFloatingBpsPrice.externalPriceId + name = newFloatingBpsPrice.name + billableMetricId = newFloatingBpsPrice.billableMetricId + itemId = newFloatingBpsPrice.itemId + billedInAdvance = newFloatingBpsPrice.billedInAdvance + fixedPriceQuantity = newFloatingBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingBpsPrice.invoiceGroupingKey + cadence = newFloatingBpsPrice.cadence + billingCycleConfiguration = newFloatingBpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingBpsPrice.invoicingCycleConfiguration + conversionRate = newFloatingBpsPrice.conversionRate + modelType = newFloatingBpsPrice.modelType + bpsConfig = newFloatingBpsPrice.bpsConfig + currency = newFloatingBpsPrice.currency + additionalProperties = newFloatingBpsPrice.additionalProperties.toMutableMap() } /** @@ -7754,34 +7969,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -7789,25 +8000,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -7817,41 +8024,41 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bps_config") fun bpsConfig(bpsConfig: BpsConfig) = apply { this.bpsConfig = bpsConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingBpsPrice = NewFloatingBpsPrice( metadata, @@ -7873,20 +8080,22 @@ constructor( ) } - @JsonDeserialize(builder = BpsConfig.Builder::class) @NoAutoDetect class BpsConfig + @JsonCreator private constructor( - private val bps: Double?, - private val perUnitMaximum: String?, - private val additionalProperties: Map, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Basis point take rate per event */ - @JsonProperty("bps") fun bps(): Double? = bps + @JsonProperty("bps") fun bps(): Double = bps /** Optional currency amount maximum to cap spend per event */ - @JsonProperty("per_unit_maximum") fun perUnitMaximum(): String? = perUnitMaximum + @JsonProperty("per_unit_maximum") + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing @@ -7907,28 +8116,26 @@ constructor( @JvmSynthetic internal fun from(bpsConfig: BpsConfig) = apply { - this.bps = bpsConfig.bps - this.perUnitMaximum = bpsConfig.perUnitMaximum - additionalProperties(bpsConfig.additionalProperties) + bps = bpsConfig.bps + perUnitMaximum = bpsConfig.perUnitMaximum + additionalProperties = bpsConfig.additionalProperties.toMutableMap() } /** Basis point take rate per event */ - @JsonProperty("bps") fun bps(bps: Double) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** Optional currency amount maximum to cap spend per event */ - @JsonProperty("per_unit_maximum") fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7936,6 +8143,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BpsConfig = BpsConfig( checkNotNull(bps) { "`bps` is required but was not set" }, @@ -8095,20 +8310,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -8129,29 +8345,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8159,6 +8373,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -8246,20 +8468,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -8281,29 +8504,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8311,6 +8532,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -8399,11 +8628,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -8423,17 +8653,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8441,6 +8670,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -8479,26 +8716,29 @@ constructor( "NewFloatingBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bpsConfig=$bpsConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingBulkBpsPrice.Builder::class) @NoAutoDetect class NewFloatingBulkBpsPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val bulkBpsConfig: BulkBpsConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_bps_config") private val bulkBpsConfig: BulkBpsConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -8506,56 +8746,63 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_bps_config") fun bulkBpsConfig(): BulkBpsConfig? = bulkBpsConfig + @JsonProperty("bulk_bps_config") fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -8589,23 +8836,22 @@ constructor( @JvmSynthetic internal fun from(newFloatingBulkBpsPrice: NewFloatingBulkBpsPrice) = apply { - this.metadata = newFloatingBulkBpsPrice.metadata - this.externalPriceId = newFloatingBulkBpsPrice.externalPriceId - this.name = newFloatingBulkBpsPrice.name - this.billableMetricId = newFloatingBulkBpsPrice.billableMetricId - this.itemId = newFloatingBulkBpsPrice.itemId - this.billedInAdvance = newFloatingBulkBpsPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingBulkBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingBulkBpsPrice.invoiceGroupingKey - this.cadence = newFloatingBulkBpsPrice.cadence - this.billingCycleConfiguration = newFloatingBulkBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newFloatingBulkBpsPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingBulkBpsPrice.conversionRate - this.modelType = newFloatingBulkBpsPrice.modelType - this.bulkBpsConfig = newFloatingBulkBpsPrice.bulkBpsConfig - this.currency = newFloatingBulkBpsPrice.currency - additionalProperties(newFloatingBulkBpsPrice.additionalProperties) + metadata = newFloatingBulkBpsPrice.metadata + externalPriceId = newFloatingBulkBpsPrice.externalPriceId + name = newFloatingBulkBpsPrice.name + billableMetricId = newFloatingBulkBpsPrice.billableMetricId + itemId = newFloatingBulkBpsPrice.itemId + billedInAdvance = newFloatingBulkBpsPrice.billedInAdvance + fixedPriceQuantity = newFloatingBulkBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingBulkBpsPrice.invoiceGroupingKey + cadence = newFloatingBulkBpsPrice.cadence + billingCycleConfiguration = newFloatingBulkBpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingBulkBpsPrice.invoicingCycleConfiguration + conversionRate = newFloatingBulkBpsPrice.conversionRate + modelType = newFloatingBulkBpsPrice.modelType + bulkBpsConfig = newFloatingBulkBpsPrice.bulkBpsConfig + currency = newFloatingBulkBpsPrice.currency + additionalProperties = newFloatingBulkBpsPrice.additionalProperties.toMutableMap() } /** @@ -8613,34 +8859,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -8648,25 +8890,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -8676,43 +8914,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bulk_bps_config") fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = apply { this.bulkBpsConfig = bulkBpsConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingBulkBpsPrice = NewFloatingBulkBpsPrice( metadata, @@ -8734,19 +8972,20 @@ constructor( ) } - @JsonDeserialize(builder = BulkBpsConfig.Builder::class) @NoAutoDetect class BulkBpsConfig + @JsonCreator private constructor( - private val tiers: List?, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single tier * based on total volume */ - @JsonProperty("tiers") fun tiers(): List? = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing @@ -8766,24 +9005,23 @@ constructor( @JvmSynthetic internal fun from(bulkBpsConfig: BulkBpsConfig) = apply { - this.tiers = bulkBpsConfig.tiers - additionalProperties(bulkBpsConfig.additionalProperties) + tiers = bulkBpsConfig.tiers.toMutableList() + additionalProperties = bulkBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single tier * based on total volume */ - @JsonProperty("tiers") fun tiers(tiers: List) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8791,6 +9029,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkBpsConfig = BulkBpsConfig( checkNotNull(tiers) { "`tiers` is required but was not set" }.toImmutable(), @@ -8798,24 +9044,27 @@ constructor( ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumAmount: String?, - private val bps: Double?, - private val perUnitMaximum: String?, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Upper bound for tier */ - @JsonProperty("maximum_amount") fun maximumAmount(): String? = maximumAmount + @JsonProperty("maximum_amount") + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Basis points to rate on */ - @JsonProperty("bps") fun bps(): Double? = bps + @JsonProperty("bps") fun bps(): Double = bps /** The maximum amount to charge for any one event */ - @JsonProperty("per_unit_maximum") fun perUnitMaximum(): String? = perUnitMaximum + @JsonProperty("per_unit_maximum") + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing @@ -8837,35 +9086,32 @@ constructor( @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for tier */ - @JsonProperty("maximum_amount") fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Basis points to rate on */ - @JsonProperty("bps") fun bps(bps: Double) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** The maximum amount to charge for any one event */ - @JsonProperty("per_unit_maximum") fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8873,6 +9119,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumAmount, @@ -9051,20 +9305,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -9085,29 +9340,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9115,6 +9368,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -9202,20 +9463,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -9237,29 +9499,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9267,6 +9527,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -9355,11 +9623,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -9379,17 +9648,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9397,6 +9665,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -9435,26 +9711,29 @@ constructor( "NewFloatingBulkBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkBpsConfig=$bulkBpsConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingBulkPrice.Builder::class) @NoAutoDetect class NewFloatingBulkPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val bulkConfig: BulkConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_config") private val bulkConfig: BulkConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -9462,56 +9741,63 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_config") fun bulkConfig(): BulkConfig? = bulkConfig + @JsonProperty("bulk_config") fun bulkConfig(): BulkConfig = bulkConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -9545,22 +9831,22 @@ constructor( @JvmSynthetic internal fun from(newFloatingBulkPrice: NewFloatingBulkPrice) = apply { - this.metadata = newFloatingBulkPrice.metadata - this.externalPriceId = newFloatingBulkPrice.externalPriceId - this.name = newFloatingBulkPrice.name - this.billableMetricId = newFloatingBulkPrice.billableMetricId - this.itemId = newFloatingBulkPrice.itemId - this.billedInAdvance = newFloatingBulkPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingBulkPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingBulkPrice.invoiceGroupingKey - this.cadence = newFloatingBulkPrice.cadence - this.billingCycleConfiguration = newFloatingBulkPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = newFloatingBulkPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingBulkPrice.conversionRate - this.modelType = newFloatingBulkPrice.modelType - this.bulkConfig = newFloatingBulkPrice.bulkConfig - this.currency = newFloatingBulkPrice.currency - additionalProperties(newFloatingBulkPrice.additionalProperties) + metadata = newFloatingBulkPrice.metadata + externalPriceId = newFloatingBulkPrice.externalPriceId + name = newFloatingBulkPrice.name + billableMetricId = newFloatingBulkPrice.billableMetricId + itemId = newFloatingBulkPrice.itemId + billedInAdvance = newFloatingBulkPrice.billedInAdvance + fixedPriceQuantity = newFloatingBulkPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingBulkPrice.invoiceGroupingKey + cadence = newFloatingBulkPrice.cadence + billingCycleConfiguration = newFloatingBulkPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingBulkPrice.invoicingCycleConfiguration + conversionRate = newFloatingBulkPrice.conversionRate + modelType = newFloatingBulkPrice.modelType + bulkConfig = newFloatingBulkPrice.bulkConfig + currency = newFloatingBulkPrice.currency + additionalProperties = newFloatingBulkPrice.additionalProperties.toMutableMap() } /** @@ -9568,34 +9854,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -9603,25 +9885,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -9631,41 +9909,41 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bulk_config") fun bulkConfig(bulkConfig: BulkConfig) = apply { this.bulkConfig = bulkConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingBulkPrice = NewFloatingBulkPrice( metadata, @@ -9687,16 +9965,17 @@ constructor( ) } - @JsonDeserialize(builder = BulkConfig.Builder::class) @NoAutoDetect class BulkConfig + @JsonCreator private constructor( - private val tiers: List?, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") fun tiers(): List? = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing @@ -9716,21 +9995,20 @@ constructor( @JvmSynthetic internal fun from(bulkConfig: BulkConfig) = apply { - this.tiers = bulkConfig.tiers - additionalProperties(bulkConfig.additionalProperties) + tiers = bulkConfig.tiers.toMutableList() + additionalProperties = bulkConfig.additionalProperties.toMutableMap() } /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") fun tiers(tiers: List) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9738,6 +10016,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkConfig = BulkConfig( checkNotNull(tiers) { "`tiers` is required but was not set" }.toImmutable(), @@ -9745,20 +10031,22 @@ constructor( ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumUnits: Double?, - private val unitAmount: String?, - private val additionalProperties: Map, + @JsonProperty("maximum_units") private val maximumUnits: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Upper bound for this tier */ - @JsonProperty("maximum_units") fun maximumUnits(): Double? = maximumUnits + @JsonProperty("maximum_units") + fun maximumUnits(): Optional = Optional.ofNullable(maximumUnits) /** Amount per unit */ - @JsonProperty("unit_amount") fun unitAmount(): String? = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing @@ -9779,29 +10067,26 @@ constructor( @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumUnits = tier.maximumUnits - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + maximumUnits = tier.maximumUnits + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for this tier */ - @JsonProperty("maximum_units") fun maximumUnits(maximumUnits: Double) = apply { this.maximumUnits = maximumUnits } /** Amount per unit */ - @JsonProperty("unit_amount") fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9809,6 +10094,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumUnits, @@ -9986,20 +10279,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -10020,29 +10314,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10050,6 +10342,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -10137,20 +10437,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -10172,29 +10473,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10202,6 +10501,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -10290,11 +10597,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -10314,17 +10622,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10332,6 +10639,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -10370,26 +10685,30 @@ constructor( "NewFloatingBulkPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkConfig=$bulkConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingThresholdTotalAmountPrice.Builder::class) @NoAutoDetect class NewFloatingThresholdTotalAmountPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val thresholdTotalAmountConfig: ThresholdTotalAmountConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("threshold_total_amount_config") + private val thresholdTotalAmountConfig: ThresholdTotalAmountConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -10397,57 +10716,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("threshold_total_amount_config") - fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig? = thresholdTotalAmountConfig + fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = thresholdTotalAmountConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -10483,25 +10809,26 @@ constructor( internal fun from( newFloatingThresholdTotalAmountPrice: NewFloatingThresholdTotalAmountPrice ) = apply { - this.metadata = newFloatingThresholdTotalAmountPrice.metadata - this.externalPriceId = newFloatingThresholdTotalAmountPrice.externalPriceId - this.name = newFloatingThresholdTotalAmountPrice.name - this.billableMetricId = newFloatingThresholdTotalAmountPrice.billableMetricId - this.itemId = newFloatingThresholdTotalAmountPrice.itemId - this.billedInAdvance = newFloatingThresholdTotalAmountPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingThresholdTotalAmountPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingThresholdTotalAmountPrice.invoiceGroupingKey - this.cadence = newFloatingThresholdTotalAmountPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingThresholdTotalAmountPrice.metadata + externalPriceId = newFloatingThresholdTotalAmountPrice.externalPriceId + name = newFloatingThresholdTotalAmountPrice.name + billableMetricId = newFloatingThresholdTotalAmountPrice.billableMetricId + itemId = newFloatingThresholdTotalAmountPrice.itemId + billedInAdvance = newFloatingThresholdTotalAmountPrice.billedInAdvance + fixedPriceQuantity = newFloatingThresholdTotalAmountPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingThresholdTotalAmountPrice.invoiceGroupingKey + cadence = newFloatingThresholdTotalAmountPrice.cadence + billingCycleConfiguration = newFloatingThresholdTotalAmountPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingThresholdTotalAmountPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingThresholdTotalAmountPrice.conversionRate - this.modelType = newFloatingThresholdTotalAmountPrice.modelType - this.thresholdTotalAmountConfig = + conversionRate = newFloatingThresholdTotalAmountPrice.conversionRate + modelType = newFloatingThresholdTotalAmountPrice.modelType + thresholdTotalAmountConfig = newFloatingThresholdTotalAmountPrice.thresholdTotalAmountConfig - this.currency = newFloatingThresholdTotalAmountPrice.currency - additionalProperties(newFloatingThresholdTotalAmountPrice.additionalProperties) + currency = newFloatingThresholdTotalAmountPrice.currency + additionalProperties = + newFloatingThresholdTotalAmountPrice.additionalProperties.toMutableMap() } /** @@ -10509,34 +10836,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -10544,25 +10867,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -10572,44 +10891,44 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("threshold_total_amount_config") fun thresholdTotalAmountConfig(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = apply { this.thresholdTotalAmountConfig = thresholdTotalAmountConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingThresholdTotalAmountPrice = NewFloatingThresholdTotalAmountPrice( metadata, @@ -10765,11 +11084,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ThresholdTotalAmountConfig.Builder::class) @NoAutoDetect class ThresholdTotalAmountConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -10789,17 +11109,17 @@ constructor( @JvmSynthetic internal fun from(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = apply { - additionalProperties(thresholdTotalAmountConfig.additionalProperties) + additionalProperties = + thresholdTotalAmountConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10807,6 +11127,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ThresholdTotalAmountConfig = ThresholdTotalAmountConfig(additionalProperties.toImmutable()) } @@ -10830,20 +11158,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -10864,29 +11193,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -10894,6 +11221,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -10981,20 +11316,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -11016,29 +11352,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11046,6 +11380,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -11134,11 +11476,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -11158,17 +11501,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11176,6 +11518,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -11214,26 +11564,29 @@ constructor( "NewFloatingThresholdTotalAmountPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, thresholdTotalAmountConfig=$thresholdTotalAmountConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredPackagePrice.Builder::class) @NoAutoDetect class NewFloatingTieredPackagePrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val tieredPackageConfig: TieredPackageConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_package_config") private val tieredPackageConfig: TieredPackageConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -11241,57 +11594,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_package_config") - fun tieredPackageConfig(): TieredPackageConfig? = tieredPackageConfig + fun tieredPackageConfig(): TieredPackageConfig = tieredPackageConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -11326,24 +11686,25 @@ constructor( @JvmSynthetic internal fun from(newFloatingTieredPackagePrice: NewFloatingTieredPackagePrice) = apply { - this.metadata = newFloatingTieredPackagePrice.metadata - this.externalPriceId = newFloatingTieredPackagePrice.externalPriceId - this.name = newFloatingTieredPackagePrice.name - this.billableMetricId = newFloatingTieredPackagePrice.billableMetricId - this.itemId = newFloatingTieredPackagePrice.itemId - this.billedInAdvance = newFloatingTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = newFloatingTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingTieredPackagePrice.invoiceGroupingKey - this.cadence = newFloatingTieredPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingTieredPackagePrice.metadata + externalPriceId = newFloatingTieredPackagePrice.externalPriceId + name = newFloatingTieredPackagePrice.name + billableMetricId = newFloatingTieredPackagePrice.billableMetricId + itemId = newFloatingTieredPackagePrice.itemId + billedInAdvance = newFloatingTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredPackagePrice.invoiceGroupingKey + cadence = newFloatingTieredPackagePrice.cadence + billingCycleConfiguration = newFloatingTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredPackagePrice.conversionRate - this.modelType = newFloatingTieredPackagePrice.modelType - this.tieredPackageConfig = newFloatingTieredPackagePrice.tieredPackageConfig - this.currency = newFloatingTieredPackagePrice.currency - additionalProperties(newFloatingTieredPackagePrice.additionalProperties) + conversionRate = newFloatingTieredPackagePrice.conversionRate + modelType = newFloatingTieredPackagePrice.modelType + tieredPackageConfig = newFloatingTieredPackagePrice.tieredPackageConfig + currency = newFloatingTieredPackagePrice.currency + additionalProperties = + newFloatingTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -11351,34 +11712,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -11386,25 +11743,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -11414,43 +11767,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_package_config") fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = apply { this.tieredPackageConfig = tieredPackageConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredPackagePrice = NewFloatingTieredPackagePrice( metadata, @@ -11606,11 +11959,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageConfig.Builder::class) @NoAutoDetect class TieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -11630,17 +11984,16 @@ constructor( @JvmSynthetic internal fun from(tieredPackageConfig: TieredPackageConfig) = apply { - additionalProperties(tieredPackageConfig.additionalProperties) + additionalProperties = tieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11648,6 +12001,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageConfig = TieredPackageConfig(additionalProperties.toImmutable()) } @@ -11671,20 +12032,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -11705,29 +12067,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11735,6 +12095,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -11822,20 +12190,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -11857,29 +12226,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11887,6 +12254,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -11975,11 +12350,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -11999,17 +12375,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12017,6 +12392,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -12055,26 +12438,29 @@ constructor( "NewFloatingTieredPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredPackageConfig=$tieredPackageConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingGroupedTieredPrice.Builder::class) @NoAutoDetect class NewFloatingGroupedTieredPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val groupedTieredConfig: GroupedTieredConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_tiered_config") private val groupedTieredConfig: GroupedTieredConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -12082,57 +12468,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_tiered_config") - fun groupedTieredConfig(): GroupedTieredConfig? = groupedTieredConfig + fun groupedTieredConfig(): GroupedTieredConfig = groupedTieredConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -12167,24 +12560,25 @@ constructor( @JvmSynthetic internal fun from(newFloatingGroupedTieredPrice: NewFloatingGroupedTieredPrice) = apply { - this.metadata = newFloatingGroupedTieredPrice.metadata - this.externalPriceId = newFloatingGroupedTieredPrice.externalPriceId - this.name = newFloatingGroupedTieredPrice.name - this.billableMetricId = newFloatingGroupedTieredPrice.billableMetricId - this.itemId = newFloatingGroupedTieredPrice.itemId - this.billedInAdvance = newFloatingGroupedTieredPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingGroupedTieredPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingGroupedTieredPrice.invoiceGroupingKey - this.cadence = newFloatingGroupedTieredPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingGroupedTieredPrice.metadata + externalPriceId = newFloatingGroupedTieredPrice.externalPriceId + name = newFloatingGroupedTieredPrice.name + billableMetricId = newFloatingGroupedTieredPrice.billableMetricId + itemId = newFloatingGroupedTieredPrice.itemId + billedInAdvance = newFloatingGroupedTieredPrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedTieredPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingGroupedTieredPrice.invoiceGroupingKey + cadence = newFloatingGroupedTieredPrice.cadence + billingCycleConfiguration = newFloatingGroupedTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedTieredPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingGroupedTieredPrice.conversionRate - this.modelType = newFloatingGroupedTieredPrice.modelType - this.groupedTieredConfig = newFloatingGroupedTieredPrice.groupedTieredConfig - this.currency = newFloatingGroupedTieredPrice.currency - additionalProperties(newFloatingGroupedTieredPrice.additionalProperties) + conversionRate = newFloatingGroupedTieredPrice.conversionRate + modelType = newFloatingGroupedTieredPrice.modelType + groupedTieredConfig = newFloatingGroupedTieredPrice.groupedTieredConfig + currency = newFloatingGroupedTieredPrice.currency + additionalProperties = + newFloatingGroupedTieredPrice.additionalProperties.toMutableMap() } /** @@ -12192,34 +12586,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -12227,25 +12617,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -12255,43 +12641,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("grouped_tiered_config") fun groupedTieredConfig(groupedTieredConfig: GroupedTieredConfig) = apply { this.groupedTieredConfig = groupedTieredConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedTieredPrice = NewFloatingGroupedTieredPrice( metadata, @@ -12396,11 +12782,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedTieredConfig.Builder::class) @NoAutoDetect class GroupedTieredConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -12420,17 +12807,16 @@ constructor( @JvmSynthetic internal fun from(groupedTieredConfig: GroupedTieredConfig) = apply { - additionalProperties(groupedTieredConfig.additionalProperties) + additionalProperties = groupedTieredConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12438,6 +12824,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedTieredConfig = GroupedTieredConfig(additionalProperties.toImmutable()) } @@ -12512,20 +12906,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -12546,29 +12941,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12576,6 +12969,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -12663,20 +13064,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -12698,29 +13100,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12728,6 +13128,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -12816,11 +13224,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -12840,17 +13249,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12858,6 +13266,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -12896,26 +13312,30 @@ constructor( "NewFloatingGroupedTieredPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedTieredConfig=$groupedTieredConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredWithMinimumPrice.Builder::class) @NoAutoDetect class NewFloatingTieredWithMinimumPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val tieredWithMinimumConfig: TieredWithMinimumConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_minimum_config") + private val tieredWithMinimumConfig: TieredWithMinimumConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -12923,57 +13343,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_minimum_config") - fun tieredWithMinimumConfig(): TieredWithMinimumConfig? = tieredWithMinimumConfig + fun tieredWithMinimumConfig(): TieredWithMinimumConfig = tieredWithMinimumConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -13009,25 +13436,25 @@ constructor( internal fun from( newFloatingTieredWithMinimumPrice: NewFloatingTieredWithMinimumPrice ) = apply { - this.metadata = newFloatingTieredWithMinimumPrice.metadata - this.externalPriceId = newFloatingTieredWithMinimumPrice.externalPriceId - this.name = newFloatingTieredWithMinimumPrice.name - this.billableMetricId = newFloatingTieredWithMinimumPrice.billableMetricId - this.itemId = newFloatingTieredWithMinimumPrice.itemId - this.billedInAdvance = newFloatingTieredWithMinimumPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingTieredWithMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingTieredWithMinimumPrice.invoiceGroupingKey - this.cadence = newFloatingTieredWithMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingTieredWithMinimumPrice.metadata + externalPriceId = newFloatingTieredWithMinimumPrice.externalPriceId + name = newFloatingTieredWithMinimumPrice.name + billableMetricId = newFloatingTieredWithMinimumPrice.billableMetricId + itemId = newFloatingTieredWithMinimumPrice.itemId + billedInAdvance = newFloatingTieredWithMinimumPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredWithMinimumPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredWithMinimumPrice.invoiceGroupingKey + cadence = newFloatingTieredWithMinimumPrice.cadence + billingCycleConfiguration = newFloatingTieredWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingTieredWithMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredWithMinimumPrice.conversionRate - this.modelType = newFloatingTieredWithMinimumPrice.modelType - this.tieredWithMinimumConfig = - newFloatingTieredWithMinimumPrice.tieredWithMinimumConfig - this.currency = newFloatingTieredWithMinimumPrice.currency - additionalProperties(newFloatingTieredWithMinimumPrice.additionalProperties) + conversionRate = newFloatingTieredWithMinimumPrice.conversionRate + modelType = newFloatingTieredWithMinimumPrice.modelType + tieredWithMinimumConfig = newFloatingTieredWithMinimumPrice.tieredWithMinimumConfig + currency = newFloatingTieredWithMinimumPrice.currency + additionalProperties = + newFloatingTieredWithMinimumPrice.additionalProperties.toMutableMap() } /** @@ -13035,34 +13462,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -13070,25 +13493,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -13098,43 +13517,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_with_minimum_config") fun tieredWithMinimumConfig(tieredWithMinimumConfig: TieredWithMinimumConfig) = apply { this.tieredWithMinimumConfig = tieredWithMinimumConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredWithMinimumPrice = NewFloatingTieredWithMinimumPrice( metadata, @@ -13290,11 +13709,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithMinimumConfig.Builder::class) @NoAutoDetect class TieredWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -13314,17 +13734,17 @@ constructor( @JvmSynthetic internal fun from(tieredWithMinimumConfig: TieredWithMinimumConfig) = apply { - additionalProperties(tieredWithMinimumConfig.additionalProperties) + additionalProperties = + tieredWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13332,6 +13752,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithMinimumConfig = TieredWithMinimumConfig(additionalProperties.toImmutable()) } @@ -13355,20 +13783,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -13389,29 +13818,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13419,6 +13846,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -13506,20 +13941,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -13541,29 +13977,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13571,6 +14005,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -13659,11 +14101,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -13683,17 +14126,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13701,6 +14143,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -13739,26 +14189,30 @@ constructor( "NewFloatingTieredWithMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithMinimumConfig=$tieredWithMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingPackageWithAllocationPrice.Builder::class) @NoAutoDetect class NewFloatingPackageWithAllocationPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val packageWithAllocationConfig: PackageWithAllocationConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_with_allocation_config") + private val packageWithAllocationConfig: PackageWithAllocationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -13766,58 +14220,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("package_with_allocation_config") - fun packageWithAllocationConfig(): PackageWithAllocationConfig? = - packageWithAllocationConfig + fun packageWithAllocationConfig(): PackageWithAllocationConfig = packageWithAllocationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -13853,25 +14313,26 @@ constructor( internal fun from( newFloatingPackageWithAllocationPrice: NewFloatingPackageWithAllocationPrice ) = apply { - this.metadata = newFloatingPackageWithAllocationPrice.metadata - this.externalPriceId = newFloatingPackageWithAllocationPrice.externalPriceId - this.name = newFloatingPackageWithAllocationPrice.name - this.billableMetricId = newFloatingPackageWithAllocationPrice.billableMetricId - this.itemId = newFloatingPackageWithAllocationPrice.itemId - this.billedInAdvance = newFloatingPackageWithAllocationPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingPackageWithAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingPackageWithAllocationPrice.invoiceGroupingKey - this.cadence = newFloatingPackageWithAllocationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingPackageWithAllocationPrice.metadata + externalPriceId = newFloatingPackageWithAllocationPrice.externalPriceId + name = newFloatingPackageWithAllocationPrice.name + billableMetricId = newFloatingPackageWithAllocationPrice.billableMetricId + itemId = newFloatingPackageWithAllocationPrice.itemId + billedInAdvance = newFloatingPackageWithAllocationPrice.billedInAdvance + fixedPriceQuantity = newFloatingPackageWithAllocationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingPackageWithAllocationPrice.invoiceGroupingKey + cadence = newFloatingPackageWithAllocationPrice.cadence + billingCycleConfiguration = newFloatingPackageWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingPackageWithAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingPackageWithAllocationPrice.conversionRate - this.modelType = newFloatingPackageWithAllocationPrice.modelType - this.packageWithAllocationConfig = + conversionRate = newFloatingPackageWithAllocationPrice.conversionRate + modelType = newFloatingPackageWithAllocationPrice.modelType + packageWithAllocationConfig = newFloatingPackageWithAllocationPrice.packageWithAllocationConfig - this.currency = newFloatingPackageWithAllocationPrice.currency - additionalProperties(newFloatingPackageWithAllocationPrice.additionalProperties) + currency = newFloatingPackageWithAllocationPrice.currency + additionalProperties = + newFloatingPackageWithAllocationPrice.additionalProperties.toMutableMap() } /** @@ -13879,34 +14340,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -13914,25 +14371,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -13942,43 +14395,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("package_with_allocation_config") fun packageWithAllocationConfig( packageWithAllocationConfig: PackageWithAllocationConfig ) = apply { this.packageWithAllocationConfig = packageWithAllocationConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingPackageWithAllocationPrice = NewFloatingPackageWithAllocationPrice( metadata, @@ -14134,11 +14587,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageWithAllocationConfig.Builder::class) @NoAutoDetect class PackageWithAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -14159,17 +14613,17 @@ constructor( @JvmSynthetic internal fun from(packageWithAllocationConfig: PackageWithAllocationConfig) = apply { - additionalProperties(packageWithAllocationConfig.additionalProperties) + additionalProperties = + packageWithAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14177,6 +14631,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageWithAllocationConfig = PackageWithAllocationConfig(additionalProperties.toImmutable()) } @@ -14200,20 +14662,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -14234,29 +14697,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14264,6 +14725,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -14351,20 +14820,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -14386,29 +14856,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14416,6 +14884,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -14504,11 +14980,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -14528,17 +15005,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -14546,6 +15022,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -14584,26 +15068,30 @@ constructor( "NewFloatingPackageWithAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageWithAllocationConfig=$packageWithAllocationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredPackageWithMinimumPrice.Builder::class) @NoAutoDetect class NewFloatingTieredPackageWithMinimumPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_package_with_minimum_config") + private val tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -14611,58 +15099,65 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_package_with_minimum_config") - fun tieredPackageWithMinimumConfig(): TieredPackageWithMinimumConfig? = + fun tieredPackageWithMinimumConfig(): TieredPackageWithMinimumConfig = tieredPackageWithMinimumConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -14698,27 +15193,26 @@ constructor( internal fun from( newFloatingTieredPackageWithMinimumPrice: NewFloatingTieredPackageWithMinimumPrice ) = apply { - this.metadata = newFloatingTieredPackageWithMinimumPrice.metadata - this.externalPriceId = newFloatingTieredPackageWithMinimumPrice.externalPriceId - this.name = newFloatingTieredPackageWithMinimumPrice.name - this.billableMetricId = newFloatingTieredPackageWithMinimumPrice.billableMetricId - this.itemId = newFloatingTieredPackageWithMinimumPrice.itemId - this.billedInAdvance = newFloatingTieredPackageWithMinimumPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingTieredPackageWithMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingTieredPackageWithMinimumPrice.invoiceGroupingKey - this.cadence = newFloatingTieredPackageWithMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingTieredPackageWithMinimumPrice.metadata + externalPriceId = newFloatingTieredPackageWithMinimumPrice.externalPriceId + name = newFloatingTieredPackageWithMinimumPrice.name + billableMetricId = newFloatingTieredPackageWithMinimumPrice.billableMetricId + itemId = newFloatingTieredPackageWithMinimumPrice.itemId + billedInAdvance = newFloatingTieredPackageWithMinimumPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredPackageWithMinimumPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredPackageWithMinimumPrice.invoiceGroupingKey + cadence = newFloatingTieredPackageWithMinimumPrice.cadence + billingCycleConfiguration = newFloatingTieredPackageWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingTieredPackageWithMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredPackageWithMinimumPrice.conversionRate - this.modelType = newFloatingTieredPackageWithMinimumPrice.modelType - this.tieredPackageWithMinimumConfig = + conversionRate = newFloatingTieredPackageWithMinimumPrice.conversionRate + modelType = newFloatingTieredPackageWithMinimumPrice.modelType + tieredPackageWithMinimumConfig = newFloatingTieredPackageWithMinimumPrice.tieredPackageWithMinimumConfig - this.currency = newFloatingTieredPackageWithMinimumPrice.currency - additionalProperties(newFloatingTieredPackageWithMinimumPrice.additionalProperties) + currency = newFloatingTieredPackageWithMinimumPrice.currency + additionalProperties = + newFloatingTieredPackageWithMinimumPrice.additionalProperties.toMutableMap() } /** @@ -14726,34 +15220,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -14761,25 +15251,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -14789,43 +15275,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_package_with_minimum_config") fun tieredPackageWithMinimumConfig( tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig ) = apply { this.tieredPackageWithMinimumConfig = tieredPackageWithMinimumConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredPackageWithMinimumPrice = NewFloatingTieredPackageWithMinimumPrice( metadata, @@ -14981,11 +15467,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageWithMinimumConfig.Builder::class) @NoAutoDetect class TieredPackageWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -15006,17 +15493,17 @@ constructor( @JvmSynthetic internal fun from(tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig) = apply { - additionalProperties(tieredPackageWithMinimumConfig.additionalProperties) + additionalProperties = + tieredPackageWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15024,6 +15511,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageWithMinimumConfig = TieredPackageWithMinimumConfig(additionalProperties.toImmutable()) } @@ -15047,20 +15542,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -15081,29 +15577,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15111,6 +15605,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -15198,20 +15700,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -15233,29 +15736,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15263,6 +15764,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -15351,11 +15860,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -15375,17 +15885,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15393,6 +15902,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -15431,26 +15948,30 @@ constructor( "NewFloatingTieredPackageWithMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredPackageWithMinimumConfig=$tieredPackageWithMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingUnitWithPercentPrice.Builder::class) @NoAutoDetect class NewFloatingUnitWithPercentPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val unitWithPercentConfig: UnitWithPercentConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_percent_config") + private val unitWithPercentConfig: UnitWithPercentConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -15458,57 +15979,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_percent_config") - fun unitWithPercentConfig(): UnitWithPercentConfig? = unitWithPercentConfig + fun unitWithPercentConfig(): UnitWithPercentConfig = unitWithPercentConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -15543,25 +16071,25 @@ constructor( @JvmSynthetic internal fun from(newFloatingUnitWithPercentPrice: NewFloatingUnitWithPercentPrice) = apply { - this.metadata = newFloatingUnitWithPercentPrice.metadata - this.externalPriceId = newFloatingUnitWithPercentPrice.externalPriceId - this.name = newFloatingUnitWithPercentPrice.name - this.billableMetricId = newFloatingUnitWithPercentPrice.billableMetricId - this.itemId = newFloatingUnitWithPercentPrice.itemId - this.billedInAdvance = newFloatingUnitWithPercentPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingUnitWithPercentPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingUnitWithPercentPrice.invoiceGroupingKey - this.cadence = newFloatingUnitWithPercentPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingUnitWithPercentPrice.metadata + externalPriceId = newFloatingUnitWithPercentPrice.externalPriceId + name = newFloatingUnitWithPercentPrice.name + billableMetricId = newFloatingUnitWithPercentPrice.billableMetricId + itemId = newFloatingUnitWithPercentPrice.itemId + billedInAdvance = newFloatingUnitWithPercentPrice.billedInAdvance + fixedPriceQuantity = newFloatingUnitWithPercentPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingUnitWithPercentPrice.invoiceGroupingKey + cadence = newFloatingUnitWithPercentPrice.cadence + billingCycleConfiguration = newFloatingUnitWithPercentPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingUnitWithPercentPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingUnitWithPercentPrice.conversionRate - this.modelType = newFloatingUnitWithPercentPrice.modelType - this.unitWithPercentConfig = - newFloatingUnitWithPercentPrice.unitWithPercentConfig - this.currency = newFloatingUnitWithPercentPrice.currency - additionalProperties(newFloatingUnitWithPercentPrice.additionalProperties) + conversionRate = newFloatingUnitWithPercentPrice.conversionRate + modelType = newFloatingUnitWithPercentPrice.modelType + unitWithPercentConfig = newFloatingUnitWithPercentPrice.unitWithPercentConfig + currency = newFloatingUnitWithPercentPrice.currency + additionalProperties = + newFloatingUnitWithPercentPrice.additionalProperties.toMutableMap() } /** @@ -15569,34 +16097,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -15604,25 +16128,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -15632,43 +16152,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("unit_with_percent_config") fun unitWithPercentConfig(unitWithPercentConfig: UnitWithPercentConfig) = apply { this.unitWithPercentConfig = unitWithPercentConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingUnitWithPercentPrice = NewFloatingUnitWithPercentPrice( metadata, @@ -15824,11 +16344,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithPercentConfig.Builder::class) @NoAutoDetect class UnitWithPercentConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -15848,17 +16369,16 @@ constructor( @JvmSynthetic internal fun from(unitWithPercentConfig: UnitWithPercentConfig) = apply { - additionalProperties(unitWithPercentConfig.additionalProperties) + additionalProperties = unitWithPercentConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15866,6 +16386,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithPercentConfig = UnitWithPercentConfig(additionalProperties.toImmutable()) } @@ -15889,20 +16417,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -15923,29 +16452,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15953,6 +16480,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -16040,20 +16575,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -16075,29 +16611,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16105,6 +16639,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -16193,11 +16735,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -16217,17 +16760,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16235,6 +16777,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -16273,26 +16823,30 @@ constructor( "NewFloatingUnitWithPercentPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithPercentConfig=$unitWithPercentConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredWithProrationPrice.Builder::class) @NoAutoDetect class NewFloatingTieredWithProrationPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val tieredWithProrationConfig: TieredWithProrationConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_proration_config") + private val tieredWithProrationConfig: TieredWithProrationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -16300,57 +16854,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_proration_config") - fun tieredWithProrationConfig(): TieredWithProrationConfig? = tieredWithProrationConfig + fun tieredWithProrationConfig(): TieredWithProrationConfig = tieredWithProrationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -16386,25 +16947,26 @@ constructor( internal fun from( newFloatingTieredWithProrationPrice: NewFloatingTieredWithProrationPrice ) = apply { - this.metadata = newFloatingTieredWithProrationPrice.metadata - this.externalPriceId = newFloatingTieredWithProrationPrice.externalPriceId - this.name = newFloatingTieredWithProrationPrice.name - this.billableMetricId = newFloatingTieredWithProrationPrice.billableMetricId - this.itemId = newFloatingTieredWithProrationPrice.itemId - this.billedInAdvance = newFloatingTieredWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingTieredWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingTieredWithProrationPrice.invoiceGroupingKey - this.cadence = newFloatingTieredWithProrationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingTieredWithProrationPrice.metadata + externalPriceId = newFloatingTieredWithProrationPrice.externalPriceId + name = newFloatingTieredWithProrationPrice.name + billableMetricId = newFloatingTieredWithProrationPrice.billableMetricId + itemId = newFloatingTieredWithProrationPrice.itemId + billedInAdvance = newFloatingTieredWithProrationPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredWithProrationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredWithProrationPrice.invoiceGroupingKey + cadence = newFloatingTieredWithProrationPrice.cadence + billingCycleConfiguration = newFloatingTieredWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingTieredWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredWithProrationPrice.conversionRate - this.modelType = newFloatingTieredWithProrationPrice.modelType - this.tieredWithProrationConfig = + conversionRate = newFloatingTieredWithProrationPrice.conversionRate + modelType = newFloatingTieredWithProrationPrice.modelType + tieredWithProrationConfig = newFloatingTieredWithProrationPrice.tieredWithProrationConfig - this.currency = newFloatingTieredWithProrationPrice.currency - additionalProperties(newFloatingTieredWithProrationPrice.additionalProperties) + currency = newFloatingTieredWithProrationPrice.currency + additionalProperties = + newFloatingTieredWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -16412,34 +16974,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -16447,25 +17005,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -16475,44 +17029,44 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_with_proration_config") fun tieredWithProrationConfig(tieredWithProrationConfig: TieredWithProrationConfig) = apply { this.tieredWithProrationConfig = tieredWithProrationConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredWithProrationPrice = NewFloatingTieredWithProrationPrice( metadata, @@ -16668,11 +17222,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithProrationConfig.Builder::class) @NoAutoDetect class TieredWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -16692,17 +17247,17 @@ constructor( @JvmSynthetic internal fun from(tieredWithProrationConfig: TieredWithProrationConfig) = apply { - additionalProperties(tieredWithProrationConfig.additionalProperties) + additionalProperties = + tieredWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16710,6 +17265,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithProrationConfig = TieredWithProrationConfig(additionalProperties.toImmutable()) } @@ -16733,20 +17296,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -16767,29 +17331,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16797,6 +17359,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -16884,20 +17454,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -16919,29 +17490,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16949,6 +17518,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -17037,11 +17614,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -17061,17 +17639,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17079,6 +17656,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -17117,26 +17702,30 @@ constructor( "NewFloatingTieredWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithProrationConfig=$tieredWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingUnitWithProrationPrice.Builder::class) @NoAutoDetect class NewFloatingUnitWithProrationPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val unitWithProrationConfig: UnitWithProrationConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_proration_config") + private val unitWithProrationConfig: UnitWithProrationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -17144,57 +17733,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_proration_config") - fun unitWithProrationConfig(): UnitWithProrationConfig? = unitWithProrationConfig + fun unitWithProrationConfig(): UnitWithProrationConfig = unitWithProrationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -17230,25 +17826,25 @@ constructor( internal fun from( newFloatingUnitWithProrationPrice: NewFloatingUnitWithProrationPrice ) = apply { - this.metadata = newFloatingUnitWithProrationPrice.metadata - this.externalPriceId = newFloatingUnitWithProrationPrice.externalPriceId - this.name = newFloatingUnitWithProrationPrice.name - this.billableMetricId = newFloatingUnitWithProrationPrice.billableMetricId - this.itemId = newFloatingUnitWithProrationPrice.itemId - this.billedInAdvance = newFloatingUnitWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingUnitWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingUnitWithProrationPrice.invoiceGroupingKey - this.cadence = newFloatingUnitWithProrationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingUnitWithProrationPrice.metadata + externalPriceId = newFloatingUnitWithProrationPrice.externalPriceId + name = newFloatingUnitWithProrationPrice.name + billableMetricId = newFloatingUnitWithProrationPrice.billableMetricId + itemId = newFloatingUnitWithProrationPrice.itemId + billedInAdvance = newFloatingUnitWithProrationPrice.billedInAdvance + fixedPriceQuantity = newFloatingUnitWithProrationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingUnitWithProrationPrice.invoiceGroupingKey + cadence = newFloatingUnitWithProrationPrice.cadence + billingCycleConfiguration = newFloatingUnitWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingUnitWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingUnitWithProrationPrice.conversionRate - this.modelType = newFloatingUnitWithProrationPrice.modelType - this.unitWithProrationConfig = - newFloatingUnitWithProrationPrice.unitWithProrationConfig - this.currency = newFloatingUnitWithProrationPrice.currency - additionalProperties(newFloatingUnitWithProrationPrice.additionalProperties) + conversionRate = newFloatingUnitWithProrationPrice.conversionRate + modelType = newFloatingUnitWithProrationPrice.modelType + unitWithProrationConfig = newFloatingUnitWithProrationPrice.unitWithProrationConfig + currency = newFloatingUnitWithProrationPrice.currency + additionalProperties = + newFloatingUnitWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -17256,34 +17852,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -17291,25 +17883,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -17319,43 +17907,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("unit_with_proration_config") fun unitWithProrationConfig(unitWithProrationConfig: UnitWithProrationConfig) = apply { this.unitWithProrationConfig = unitWithProrationConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingUnitWithProrationPrice = NewFloatingUnitWithProrationPrice( metadata, @@ -17511,11 +18099,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithProrationConfig.Builder::class) @NoAutoDetect class UnitWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -17535,17 +18124,17 @@ constructor( @JvmSynthetic internal fun from(unitWithProrationConfig: UnitWithProrationConfig) = apply { - additionalProperties(unitWithProrationConfig.additionalProperties) + additionalProperties = + unitWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17553,6 +18142,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithProrationConfig = UnitWithProrationConfig(additionalProperties.toImmutable()) } @@ -17576,20 +18173,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -17610,29 +18208,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17640,6 +18236,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -17727,20 +18331,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -17762,29 +18367,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17792,6 +18395,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -17880,11 +18491,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -17904,17 +18516,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17922,6 +18533,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -17960,26 +18579,30 @@ constructor( "NewFloatingUnitWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithProrationConfig=$unitWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingGroupedAllocationPrice.Builder::class) @NoAutoDetect class NewFloatingGroupedAllocationPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val groupedAllocationConfig: GroupedAllocationConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_allocation_config") + private val groupedAllocationConfig: GroupedAllocationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -17987,57 +18610,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_allocation_config") - fun groupedAllocationConfig(): GroupedAllocationConfig? = groupedAllocationConfig + fun groupedAllocationConfig(): GroupedAllocationConfig = groupedAllocationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -18073,25 +18703,25 @@ constructor( internal fun from( newFloatingGroupedAllocationPrice: NewFloatingGroupedAllocationPrice ) = apply { - this.metadata = newFloatingGroupedAllocationPrice.metadata - this.externalPriceId = newFloatingGroupedAllocationPrice.externalPriceId - this.name = newFloatingGroupedAllocationPrice.name - this.billableMetricId = newFloatingGroupedAllocationPrice.billableMetricId - this.itemId = newFloatingGroupedAllocationPrice.itemId - this.billedInAdvance = newFloatingGroupedAllocationPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingGroupedAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingGroupedAllocationPrice.invoiceGroupingKey - this.cadence = newFloatingGroupedAllocationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingGroupedAllocationPrice.metadata + externalPriceId = newFloatingGroupedAllocationPrice.externalPriceId + name = newFloatingGroupedAllocationPrice.name + billableMetricId = newFloatingGroupedAllocationPrice.billableMetricId + itemId = newFloatingGroupedAllocationPrice.itemId + billedInAdvance = newFloatingGroupedAllocationPrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedAllocationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingGroupedAllocationPrice.invoiceGroupingKey + cadence = newFloatingGroupedAllocationPrice.cadence + billingCycleConfiguration = newFloatingGroupedAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingGroupedAllocationPrice.conversionRate - this.modelType = newFloatingGroupedAllocationPrice.modelType - this.groupedAllocationConfig = - newFloatingGroupedAllocationPrice.groupedAllocationConfig - this.currency = newFloatingGroupedAllocationPrice.currency - additionalProperties(newFloatingGroupedAllocationPrice.additionalProperties) + conversionRate = newFloatingGroupedAllocationPrice.conversionRate + modelType = newFloatingGroupedAllocationPrice.modelType + groupedAllocationConfig = newFloatingGroupedAllocationPrice.groupedAllocationConfig + currency = newFloatingGroupedAllocationPrice.currency + additionalProperties = + newFloatingGroupedAllocationPrice.additionalProperties.toMutableMap() } /** @@ -18099,34 +18729,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -18134,25 +18760,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -18162,43 +18784,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("grouped_allocation_config") fun groupedAllocationConfig(groupedAllocationConfig: GroupedAllocationConfig) = apply { this.groupedAllocationConfig = groupedAllocationConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedAllocationPrice = NewFloatingGroupedAllocationPrice( metadata, @@ -18303,11 +18925,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedAllocationConfig.Builder::class) @NoAutoDetect class GroupedAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -18327,17 +18950,17 @@ constructor( @JvmSynthetic internal fun from(groupedAllocationConfig: GroupedAllocationConfig) = apply { - additionalProperties(groupedAllocationConfig.additionalProperties) + additionalProperties = + groupedAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18345,6 +18968,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedAllocationConfig = GroupedAllocationConfig(additionalProperties.toImmutable()) } @@ -18419,20 +19050,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -18453,29 +19085,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18483,6 +19113,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -18570,20 +19208,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -18605,29 +19244,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18635,6 +19272,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -18723,11 +19368,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -18747,17 +19393,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18765,6 +19410,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -18803,26 +19456,30 @@ constructor( "NewFloatingGroupedAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedAllocationConfig=$groupedAllocationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingGroupedWithProratedMinimumPrice.Builder::class) @NoAutoDetect class NewFloatingGroupedWithProratedMinimumPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_prorated_minimum_config") + private val groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -18830,58 +19487,65 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_prorated_minimum_config") - fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig? = + fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = groupedWithProratedMinimumConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -18918,29 +19582,26 @@ constructor( newFloatingGroupedWithProratedMinimumPrice: NewFloatingGroupedWithProratedMinimumPrice ) = apply { - this.metadata = newFloatingGroupedWithProratedMinimumPrice.metadata - this.externalPriceId = newFloatingGroupedWithProratedMinimumPrice.externalPriceId - this.name = newFloatingGroupedWithProratedMinimumPrice.name - this.billableMetricId = newFloatingGroupedWithProratedMinimumPrice.billableMetricId - this.itemId = newFloatingGroupedWithProratedMinimumPrice.itemId - this.billedInAdvance = newFloatingGroupedWithProratedMinimumPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingGroupedWithProratedMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingGroupedWithProratedMinimumPrice.invoiceGroupingKey - this.cadence = newFloatingGroupedWithProratedMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingGroupedWithProratedMinimumPrice.metadata + externalPriceId = newFloatingGroupedWithProratedMinimumPrice.externalPriceId + name = newFloatingGroupedWithProratedMinimumPrice.name + billableMetricId = newFloatingGroupedWithProratedMinimumPrice.billableMetricId + itemId = newFloatingGroupedWithProratedMinimumPrice.itemId + billedInAdvance = newFloatingGroupedWithProratedMinimumPrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedWithProratedMinimumPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingGroupedWithProratedMinimumPrice.invoiceGroupingKey + cadence = newFloatingGroupedWithProratedMinimumPrice.cadence + billingCycleConfiguration = newFloatingGroupedWithProratedMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedWithProratedMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingGroupedWithProratedMinimumPrice.conversionRate - this.modelType = newFloatingGroupedWithProratedMinimumPrice.modelType - this.groupedWithProratedMinimumConfig = + conversionRate = newFloatingGroupedWithProratedMinimumPrice.conversionRate + modelType = newFloatingGroupedWithProratedMinimumPrice.modelType + groupedWithProratedMinimumConfig = newFloatingGroupedWithProratedMinimumPrice.groupedWithProratedMinimumConfig - this.currency = newFloatingGroupedWithProratedMinimumPrice.currency - additionalProperties( - newFloatingGroupedWithProratedMinimumPrice.additionalProperties - ) + currency = newFloatingGroupedWithProratedMinimumPrice.currency + additionalProperties = + newFloatingGroupedWithProratedMinimumPrice.additionalProperties.toMutableMap() } /** @@ -18948,34 +19609,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -18983,25 +19640,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -19011,43 +19664,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("grouped_with_prorated_minimum_config") fun groupedWithProratedMinimumConfig( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = apply { this.groupedWithProratedMinimumConfig = groupedWithProratedMinimumConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedWithProratedMinimumPrice = NewFloatingGroupedWithProratedMinimumPrice( metadata, @@ -19152,11 +19805,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithProratedMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithProratedMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -19178,17 +19832,17 @@ constructor( internal fun from( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = apply { - additionalProperties(groupedWithProratedMinimumConfig.additionalProperties) + additionalProperties = + groupedWithProratedMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19196,6 +19850,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithProratedMinimumConfig = GroupedWithProratedMinimumConfig(additionalProperties.toImmutable()) } @@ -19270,20 +19932,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -19304,29 +19967,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19334,6 +19995,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -19421,20 +20090,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -19456,29 +20126,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19486,6 +20154,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -19574,11 +20250,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -19598,17 +20275,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19616,6 +20292,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -19654,26 +20338,30 @@ constructor( "NewFloatingGroupedWithProratedMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithProratedMinimumConfig=$groupedWithProratedMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingGroupedWithMeteredMinimumPrice.Builder::class) @NoAutoDetect class NewFloatingGroupedWithMeteredMinimumPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_metered_minimum_config") + private val groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -19681,58 +20369,65 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_metered_minimum_config") - fun groupedWithMeteredMinimumConfig(): GroupedWithMeteredMinimumConfig? = + fun groupedWithMeteredMinimumConfig(): GroupedWithMeteredMinimumConfig = groupedWithMeteredMinimumConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -19768,27 +20463,26 @@ constructor( internal fun from( newFloatingGroupedWithMeteredMinimumPrice: NewFloatingGroupedWithMeteredMinimumPrice ) = apply { - this.metadata = newFloatingGroupedWithMeteredMinimumPrice.metadata - this.externalPriceId = newFloatingGroupedWithMeteredMinimumPrice.externalPriceId - this.name = newFloatingGroupedWithMeteredMinimumPrice.name - this.billableMetricId = newFloatingGroupedWithMeteredMinimumPrice.billableMetricId - this.itemId = newFloatingGroupedWithMeteredMinimumPrice.itemId - this.billedInAdvance = newFloatingGroupedWithMeteredMinimumPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingGroupedWithMeteredMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingGroupedWithMeteredMinimumPrice.invoiceGroupingKey - this.cadence = newFloatingGroupedWithMeteredMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingGroupedWithMeteredMinimumPrice.metadata + externalPriceId = newFloatingGroupedWithMeteredMinimumPrice.externalPriceId + name = newFloatingGroupedWithMeteredMinimumPrice.name + billableMetricId = newFloatingGroupedWithMeteredMinimumPrice.billableMetricId + itemId = newFloatingGroupedWithMeteredMinimumPrice.itemId + billedInAdvance = newFloatingGroupedWithMeteredMinimumPrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedWithMeteredMinimumPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingGroupedWithMeteredMinimumPrice.invoiceGroupingKey + cadence = newFloatingGroupedWithMeteredMinimumPrice.cadence + billingCycleConfiguration = newFloatingGroupedWithMeteredMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedWithMeteredMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingGroupedWithMeteredMinimumPrice.conversionRate - this.modelType = newFloatingGroupedWithMeteredMinimumPrice.modelType - this.groupedWithMeteredMinimumConfig = + conversionRate = newFloatingGroupedWithMeteredMinimumPrice.conversionRate + modelType = newFloatingGroupedWithMeteredMinimumPrice.modelType + groupedWithMeteredMinimumConfig = newFloatingGroupedWithMeteredMinimumPrice.groupedWithMeteredMinimumConfig - this.currency = newFloatingGroupedWithMeteredMinimumPrice.currency - additionalProperties(newFloatingGroupedWithMeteredMinimumPrice.additionalProperties) + currency = newFloatingGroupedWithMeteredMinimumPrice.currency + additionalProperties = + newFloatingGroupedWithMeteredMinimumPrice.additionalProperties.toMutableMap() } /** @@ -19796,34 +20490,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -19831,25 +20521,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -19859,43 +20545,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("grouped_with_metered_minimum_config") fun groupedWithMeteredMinimumConfig( groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig ) = apply { this.groupedWithMeteredMinimumConfig = groupedWithMeteredMinimumConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedWithMeteredMinimumPrice = NewFloatingGroupedWithMeteredMinimumPrice( metadata, @@ -20000,11 +20686,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithMeteredMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithMeteredMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -20026,17 +20713,17 @@ constructor( internal fun from( groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig ) = apply { - additionalProperties(groupedWithMeteredMinimumConfig.additionalProperties) + additionalProperties = + groupedWithMeteredMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20044,6 +20731,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithMeteredMinimumConfig = GroupedWithMeteredMinimumConfig(additionalProperties.toImmutable()) } @@ -20118,20 +20813,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -20152,29 +20848,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20182,6 +20876,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -20269,20 +20971,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -20304,29 +21007,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20334,6 +21035,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -20422,11 +21131,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -20446,17 +21156,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20464,6 +21173,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -20502,26 +21219,30 @@ constructor( "NewFloatingGroupedWithMeteredMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithMeteredMinimumConfig=$groupedWithMeteredMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingMatrixWithDisplayNamePrice.Builder::class) @NoAutoDetect class NewFloatingMatrixWithDisplayNamePrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_with_display_name_config") + private val matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -20529,58 +21250,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("matrix_with_display_name_config") - fun matrixWithDisplayNameConfig(): MatrixWithDisplayNameConfig? = - matrixWithDisplayNameConfig + fun matrixWithDisplayNameConfig(): MatrixWithDisplayNameConfig = matrixWithDisplayNameConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -20616,25 +21343,26 @@ constructor( internal fun from( newFloatingMatrixWithDisplayNamePrice: NewFloatingMatrixWithDisplayNamePrice ) = apply { - this.metadata = newFloatingMatrixWithDisplayNamePrice.metadata - this.externalPriceId = newFloatingMatrixWithDisplayNamePrice.externalPriceId - this.name = newFloatingMatrixWithDisplayNamePrice.name - this.billableMetricId = newFloatingMatrixWithDisplayNamePrice.billableMetricId - this.itemId = newFloatingMatrixWithDisplayNamePrice.itemId - this.billedInAdvance = newFloatingMatrixWithDisplayNamePrice.billedInAdvance - this.fixedPriceQuantity = newFloatingMatrixWithDisplayNamePrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingMatrixWithDisplayNamePrice.invoiceGroupingKey - this.cadence = newFloatingMatrixWithDisplayNamePrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingMatrixWithDisplayNamePrice.metadata + externalPriceId = newFloatingMatrixWithDisplayNamePrice.externalPriceId + name = newFloatingMatrixWithDisplayNamePrice.name + billableMetricId = newFloatingMatrixWithDisplayNamePrice.billableMetricId + itemId = newFloatingMatrixWithDisplayNamePrice.itemId + billedInAdvance = newFloatingMatrixWithDisplayNamePrice.billedInAdvance + fixedPriceQuantity = newFloatingMatrixWithDisplayNamePrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingMatrixWithDisplayNamePrice.invoiceGroupingKey + cadence = newFloatingMatrixWithDisplayNamePrice.cadence + billingCycleConfiguration = newFloatingMatrixWithDisplayNamePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingMatrixWithDisplayNamePrice.invoicingCycleConfiguration - this.conversionRate = newFloatingMatrixWithDisplayNamePrice.conversionRate - this.modelType = newFloatingMatrixWithDisplayNamePrice.modelType - this.matrixWithDisplayNameConfig = + conversionRate = newFloatingMatrixWithDisplayNamePrice.conversionRate + modelType = newFloatingMatrixWithDisplayNamePrice.modelType + matrixWithDisplayNameConfig = newFloatingMatrixWithDisplayNamePrice.matrixWithDisplayNameConfig - this.currency = newFloatingMatrixWithDisplayNamePrice.currency - additionalProperties(newFloatingMatrixWithDisplayNamePrice.additionalProperties) + currency = newFloatingMatrixWithDisplayNamePrice.currency + additionalProperties = + newFloatingMatrixWithDisplayNamePrice.additionalProperties.toMutableMap() } /** @@ -20642,34 +21370,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -20677,25 +21401,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -20705,43 +21425,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("matrix_with_display_name_config") fun matrixWithDisplayNameConfig( matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig ) = apply { this.matrixWithDisplayNameConfig = matrixWithDisplayNameConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingMatrixWithDisplayNamePrice = NewFloatingMatrixWithDisplayNamePrice( metadata, @@ -20846,11 +21566,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixWithDisplayNameConfig.Builder::class) @NoAutoDetect class MatrixWithDisplayNameConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -20871,17 +21592,17 @@ constructor( @JvmSynthetic internal fun from(matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig) = apply { - additionalProperties(matrixWithDisplayNameConfig.additionalProperties) + additionalProperties = + matrixWithDisplayNameConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20889,6 +21610,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixWithDisplayNameConfig = MatrixWithDisplayNameConfig(additionalProperties.toImmutable()) } @@ -20963,20 +21692,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -20997,29 +21727,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21027,6 +21755,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -21114,20 +21850,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -21149,29 +21886,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21179,6 +21914,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -21267,11 +22010,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -21291,17 +22035,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21309,6 +22052,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -21347,26 +22098,30 @@ constructor( "NewFloatingMatrixWithDisplayNamePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixWithDisplayNameConfig=$matrixWithDisplayNameConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingBulkWithProrationPrice.Builder::class) @NoAutoDetect class NewFloatingBulkWithProrationPrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val bulkWithProrationConfig: BulkWithProrationConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_with_proration_config") + private val bulkWithProrationConfig: BulkWithProrationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -21374,57 +22129,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("bulk_with_proration_config") - fun bulkWithProrationConfig(): BulkWithProrationConfig? = bulkWithProrationConfig + fun bulkWithProrationConfig(): BulkWithProrationConfig = bulkWithProrationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -21460,25 +22222,25 @@ constructor( internal fun from( newFloatingBulkWithProrationPrice: NewFloatingBulkWithProrationPrice ) = apply { - this.metadata = newFloatingBulkWithProrationPrice.metadata - this.externalPriceId = newFloatingBulkWithProrationPrice.externalPriceId - this.name = newFloatingBulkWithProrationPrice.name - this.billableMetricId = newFloatingBulkWithProrationPrice.billableMetricId - this.itemId = newFloatingBulkWithProrationPrice.itemId - this.billedInAdvance = newFloatingBulkWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingBulkWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingBulkWithProrationPrice.invoiceGroupingKey - this.cadence = newFloatingBulkWithProrationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingBulkWithProrationPrice.metadata + externalPriceId = newFloatingBulkWithProrationPrice.externalPriceId + name = newFloatingBulkWithProrationPrice.name + billableMetricId = newFloatingBulkWithProrationPrice.billableMetricId + itemId = newFloatingBulkWithProrationPrice.itemId + billedInAdvance = newFloatingBulkWithProrationPrice.billedInAdvance + fixedPriceQuantity = newFloatingBulkWithProrationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingBulkWithProrationPrice.invoiceGroupingKey + cadence = newFloatingBulkWithProrationPrice.cadence + billingCycleConfiguration = newFloatingBulkWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingBulkWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingBulkWithProrationPrice.conversionRate - this.modelType = newFloatingBulkWithProrationPrice.modelType - this.bulkWithProrationConfig = - newFloatingBulkWithProrationPrice.bulkWithProrationConfig - this.currency = newFloatingBulkWithProrationPrice.currency - additionalProperties(newFloatingBulkWithProrationPrice.additionalProperties) + conversionRate = newFloatingBulkWithProrationPrice.conversionRate + modelType = newFloatingBulkWithProrationPrice.modelType + bulkWithProrationConfig = newFloatingBulkWithProrationPrice.bulkWithProrationConfig + currency = newFloatingBulkWithProrationPrice.currency + additionalProperties = + newFloatingBulkWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -21486,34 +22248,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -21521,25 +22279,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -21549,43 +22303,43 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bulk_with_proration_config") fun bulkWithProrationConfig(bulkWithProrationConfig: BulkWithProrationConfig) = apply { this.bulkWithProrationConfig = bulkWithProrationConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingBulkWithProrationPrice = NewFloatingBulkWithProrationPrice( metadata, @@ -21609,11 +22363,12 @@ constructor( ) } - @JsonDeserialize(builder = BulkWithProrationConfig.Builder::class) @NoAutoDetect class BulkWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -21633,17 +22388,17 @@ constructor( @JvmSynthetic internal fun from(bulkWithProrationConfig: BulkWithProrationConfig) = apply { - additionalProperties(bulkWithProrationConfig.additionalProperties) + additionalProperties = + bulkWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21651,6 +22406,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkWithProrationConfig = BulkWithProrationConfig(additionalProperties.toImmutable()) } @@ -21806,20 +22569,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -21840,29 +22604,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21870,6 +22632,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -21957,20 +22727,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -21992,29 +22763,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22022,6 +22791,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -22110,11 +22887,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -22134,17 +22912,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22152,6 +22929,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -22190,26 +22975,30 @@ constructor( "NewFloatingBulkWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkWithProrationConfig=$bulkWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingGroupedTieredPackagePrice.Builder::class) @NoAutoDetect class NewFloatingGroupedTieredPackagePrice + @JsonCreator private constructor( - private val metadata: Metadata?, - private val externalPriceId: String?, - private val name: String?, - private val billableMetricId: String?, - private val itemId: String?, - private val billedInAdvance: Boolean?, - private val fixedPriceQuantity: Double?, - private val invoiceGroupingKey: String?, - private val cadence: Cadence?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, - private val conversionRate: Double?, - private val modelType: ModelType?, - private val groupedTieredPackageConfig: GroupedTieredPackageConfig?, - private val currency: String?, - private val additionalProperties: Map, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_tiered_package_config") + private val groupedTieredPackageConfig: GroupedTieredPackageConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -22217,57 +23006,64 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") fun name(): String? = name + @JsonProperty("name") fun name(): String = name /** The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(): String? = billableMetricId + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(): String? = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(): Boolean? = billedInAdvance + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(): String? = invoiceGroupingKey + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** For custom cadence: specifies the duration of the billing period in days or months. */ @JsonProperty("billing_cycle_configuration") - fun billingCycleConfiguration(): BillingCycleConfiguration? = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - fun invoicingCycleConfiguration(): InvoicingCycleConfiguration? = - invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(): Double? = conversionRate + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") fun modelType(): ModelType? = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_tiered_package_config") - fun groupedTieredPackageConfig(): GroupedTieredPackageConfig? = groupedTieredPackageConfig + fun groupedTieredPackageConfig(): GroupedTieredPackageConfig = groupedTieredPackageConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing @@ -22303,25 +23099,26 @@ constructor( internal fun from( newFloatingGroupedTieredPackagePrice: NewFloatingGroupedTieredPackagePrice ) = apply { - this.metadata = newFloatingGroupedTieredPackagePrice.metadata - this.externalPriceId = newFloatingGroupedTieredPackagePrice.externalPriceId - this.name = newFloatingGroupedTieredPackagePrice.name - this.billableMetricId = newFloatingGroupedTieredPackagePrice.billableMetricId - this.itemId = newFloatingGroupedTieredPackagePrice.itemId - this.billedInAdvance = newFloatingGroupedTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = newFloatingGroupedTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingGroupedTieredPackagePrice.invoiceGroupingKey - this.cadence = newFloatingGroupedTieredPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingGroupedTieredPackagePrice.metadata + externalPriceId = newFloatingGroupedTieredPackagePrice.externalPriceId + name = newFloatingGroupedTieredPackagePrice.name + billableMetricId = newFloatingGroupedTieredPackagePrice.billableMetricId + itemId = newFloatingGroupedTieredPackagePrice.itemId + billedInAdvance = newFloatingGroupedTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingGroupedTieredPackagePrice.invoiceGroupingKey + cadence = newFloatingGroupedTieredPackagePrice.cadence + billingCycleConfiguration = newFloatingGroupedTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newFloatingGroupedTieredPackagePrice.conversionRate - this.modelType = newFloatingGroupedTieredPackagePrice.modelType - this.groupedTieredPackageConfig = + conversionRate = newFloatingGroupedTieredPackagePrice.conversionRate + modelType = newFloatingGroupedTieredPackagePrice.modelType + groupedTieredPackageConfig = newFloatingGroupedTieredPackagePrice.groupedTieredPackageConfig - this.currency = newFloatingGroupedTieredPackagePrice.currency - additionalProperties(newFloatingGroupedTieredPackagePrice.additionalProperties) + currency = newFloatingGroupedTieredPackagePrice.currency + additionalProperties = + newFloatingGroupedTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -22329,34 +23126,30 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - @JsonProperty("name") fun name(name: String) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is usage-based. */ - @JsonProperty("billable_metric_id") fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") fun itemId(itemId: String) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if this is * true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -22364,25 +23157,21 @@ constructor( /** * If the Price represents a fixed cost, this represents the quantity of units applied. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(billingCycleConfiguration: BillingCycleConfiguration) = apply { this.billingCycleConfiguration = billingCycleConfiguration @@ -22392,44 +23181,44 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - @JsonProperty("model_type") fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("grouped_tiered_package_config") fun groupedTieredPackageConfig(groupedTieredPackageConfig: GroupedTieredPackageConfig) = apply { this.groupedTieredPackageConfig = groupedTieredPackageConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedTieredPackagePrice = NewFloatingGroupedTieredPackagePrice( metadata, @@ -22534,11 +23323,12 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedTieredPackageConfig.Builder::class) @NoAutoDetect class GroupedTieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -22558,17 +23348,17 @@ constructor( @JvmSynthetic internal fun from(groupedTieredPackageConfig: GroupedTieredPackageConfig) = apply { - additionalProperties(groupedTieredPackageConfig.additionalProperties) + additionalProperties = + groupedTieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22576,6 +23366,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedTieredPackageConfig = GroupedTieredPackageConfig(additionalProperties.toImmutable()) } @@ -22650,20 +23448,21 @@ constructor( } /** For custom cadence: specifies the duration of the billing period in days or months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -22684,29 +23483,27 @@ constructor( @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22714,6 +23511,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -22801,20 +23606,21 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. If * unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: Long?, - private val durationUnit: DurationUnit?, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(): Long? = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(): DurationUnit? = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing @@ -22836,29 +23642,27 @@ constructor( @JvmSynthetic internal fun from(invoicingCycleConfiguration: InvoicingCycleConfiguration) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - @JsonProperty("duration") fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22866,6 +23670,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( checkNotNull(duration) { "`duration` is required but was not set" }, @@ -22954,11 +23766,12 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -22978,17 +23791,16 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22996,6 +23808,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceEvaluateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceEvaluateParams.kt index 26582520..c1207d3c 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceEvaluateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceEvaluateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects @@ -74,44 +75,48 @@ constructor( } } - @JsonDeserialize(builder = PriceEvaluateBody.Builder::class) @NoAutoDetect class PriceEvaluateBody + @JsonCreator internal constructor( - private val timeframeEnd: OffsetDateTime?, - private val timeframeStart: OffsetDateTime?, - private val customerId: String?, - private val externalCustomerId: String?, - private val filter: String?, - private val groupingKeys: List?, - private val additionalProperties: Map, + @JsonProperty("timeframe_end") private val timeframeEnd: OffsetDateTime, + @JsonProperty("timeframe_start") private val timeframeStart: OffsetDateTime, + @JsonProperty("customer_id") private val customerId: String?, + @JsonProperty("external_customer_id") private val externalCustomerId: String?, + @JsonProperty("filter") private val filter: String?, + @JsonProperty("grouping_keys") private val groupingKeys: List?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The exclusive upper bound for event timestamps */ - @JsonProperty("timeframe_end") fun timeframeEnd(): OffsetDateTime? = timeframeEnd + @JsonProperty("timeframe_end") fun timeframeEnd(): OffsetDateTime = timeframeEnd /** The inclusive lower bound for event timestamps */ - @JsonProperty("timeframe_start") fun timeframeStart(): OffsetDateTime? = timeframeStart + @JsonProperty("timeframe_start") fun timeframeStart(): OffsetDateTime = timeframeStart /** The ID of the customer to which this evaluation is scoped. */ - @JsonProperty("customer_id") fun customerId(): String? = customerId + @JsonProperty("customer_id") + fun customerId(): Optional = Optional.ofNullable(customerId) /** The external customer ID of the customer to which this evaluation is scoped. */ - @JsonProperty("external_customer_id") fun externalCustomerId(): String? = externalCustomerId + @JsonProperty("external_customer_id") + fun externalCustomerId(): Optional = Optional.ofNullable(externalCustomerId) /** * A boolean * [computed property](../guides/extensibility/advanced-metrics#computed-properties) used to * filter the underlying billable metric */ - @JsonProperty("filter") fun filter(): String? = filter + @JsonProperty("filter") fun filter(): Optional = Optional.ofNullable(filter) /** * Properties (or * [computed properties](../guides/extensibility/advanced-metrics#computed-properties)) used * to group the underlying billable metric */ - @JsonProperty("grouping_keys") fun groupingKeys(): List? = groupingKeys + @JsonProperty("grouping_keys") + fun groupingKeys(): Optional> = Optional.ofNullable(groupingKeys) @JsonAnyGetter @ExcludeMissing @@ -136,33 +141,29 @@ constructor( @JvmSynthetic internal fun from(priceEvaluateBody: PriceEvaluateBody) = apply { - this.timeframeEnd = priceEvaluateBody.timeframeEnd - this.timeframeStart = priceEvaluateBody.timeframeStart - this.customerId = priceEvaluateBody.customerId - this.externalCustomerId = priceEvaluateBody.externalCustomerId - this.filter = priceEvaluateBody.filter - this.groupingKeys = priceEvaluateBody.groupingKeys - additionalProperties(priceEvaluateBody.additionalProperties) + timeframeEnd = priceEvaluateBody.timeframeEnd + timeframeStart = priceEvaluateBody.timeframeStart + customerId = priceEvaluateBody.customerId + externalCustomerId = priceEvaluateBody.externalCustomerId + filter = priceEvaluateBody.filter + groupingKeys = priceEvaluateBody.groupingKeys?.toMutableList() + additionalProperties = priceEvaluateBody.additionalProperties.toMutableMap() } /** The exclusive upper bound for event timestamps */ - @JsonProperty("timeframe_end") fun timeframeEnd(timeframeEnd: OffsetDateTime) = apply { this.timeframeEnd = timeframeEnd } /** The inclusive lower bound for event timestamps */ - @JsonProperty("timeframe_start") fun timeframeStart(timeframeStart: OffsetDateTime) = apply { this.timeframeStart = timeframeStart } /** The ID of the customer to which this evaluation is scoped. */ - @JsonProperty("customer_id") fun customerId(customerId: String) = apply { this.customerId = customerId } /** The external customer ID of the customer to which this evaluation is scoped. */ - @JsonProperty("external_customer_id") fun externalCustomerId(externalCustomerId: String) = apply { this.externalCustomerId = externalCustomerId } @@ -172,32 +173,36 @@ constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties) * used to filter the underlying billable metric */ - @JsonProperty("filter") fun filter(filter: String) = apply { this.filter = filter } + fun filter(filter: String) = apply { this.filter = filter } /** * Properties (or * [computed properties](../guides/extensibility/advanced-metrics#computed-properties)) * used to group the underlying billable metric */ - @JsonProperty("grouping_keys") fun groupingKeys(groupingKeys: List) = apply { this.groupingKeys = groupingKeys } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceEvaluateBody = PriceEvaluateBody( checkNotNull(timeframeEnd) { "`timeframeEnd` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceEvaluateResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceEvaluateResponse.kt index c600e26a..60f9be4c 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceEvaluateResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceEvaluateResponse.kt @@ -4,26 +4,27 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects -@JsonDeserialize(builder = PriceEvaluateResponse.Builder::class) @NoAutoDetect class PriceEvaluateResponse +@JsonCreator private constructor( - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun data(): List = data.getRequired("data") @JsonProperty("data") @ExcludeMissing fun _data() = data @@ -32,6 +33,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceEvaluateResponse = apply { if (!validated) { data().forEach { it.validate() } @@ -53,30 +56,33 @@ private constructor( @JvmSynthetic internal fun from(priceEvaluateResponse: PriceEvaluateResponse) = apply { - this.data = priceEvaluateResponse.data - additionalProperties(priceEvaluateResponse.additionalProperties) + data = priceEvaluateResponse.data + additionalProperties = priceEvaluateResponse.additionalProperties.toMutableMap() } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceEvaluateResponse = PriceEvaluateResponse(data.map { it.toImmutable() }, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceExternalPriceIdUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceExternalPriceIdUpdateParams.kt index a7d5c539..dc4d7f49 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceExternalPriceIdUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceExternalPriceIdUpdateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional @@ -50,12 +51,13 @@ constructor( } } - @JsonDeserialize(builder = PriceExternalPriceIdUpdateBody.Builder::class) @NoAutoDetect class PriceExternalPriceIdUpdateBody + @JsonCreator internal constructor( - private val metadata: Metadata?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -63,7 +65,7 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) @JsonAnyGetter @ExcludeMissing @@ -84,8 +86,9 @@ constructor( @JvmSynthetic internal fun from(priceExternalPriceIdUpdateBody: PriceExternalPriceIdUpdateBody) = apply { - this.metadata = priceExternalPriceIdUpdateBody.metadata - additionalProperties(priceExternalPriceIdUpdateBody.additionalProperties) + metadata = priceExternalPriceIdUpdateBody.metadata + additionalProperties = + priceExternalPriceIdUpdateBody.additionalProperties.toMutableMap() } /** @@ -93,23 +96,27 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceExternalPriceIdUpdateBody = PriceExternalPriceIdUpdateBody(metadata, additionalProperties.toImmutable()) } @@ -306,11 +313,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -330,23 +338,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceListPage.kt index b2246758..ca60700a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.PriceService import java.util.Objects @@ -82,13 +83,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -152,18 +155,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceListPageAsync.kt index bab00e55..d409df6b 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.PriceServiceAsync import java.util.Objects @@ -85,13 +86,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -155,18 +158,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceUpdateParams.kt index e6503a5c..e2a79857 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/PriceUpdateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional @@ -50,12 +51,13 @@ constructor( } } - @JsonDeserialize(builder = PriceUpdateBody.Builder::class) @NoAutoDetect class PriceUpdateBody + @JsonCreator internal constructor( - private val metadata: Metadata?, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -63,7 +65,7 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) @JsonAnyGetter @ExcludeMissing @@ -83,8 +85,8 @@ constructor( @JvmSynthetic internal fun from(priceUpdateBody: PriceUpdateBody) = apply { - this.metadata = priceUpdateBody.metadata - additionalProperties(priceUpdateBody.additionalProperties) + metadata = priceUpdateBody.metadata + additionalProperties = priceUpdateBody.additionalProperties.toMutableMap() } /** @@ -92,23 +94,27 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceUpdateBody = PriceUpdateBody(metadata, additionalProperties.toImmutable()) } @@ -300,11 +306,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -324,23 +331,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Subscription.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Subscription.kt index aec0b2fc..6220af2a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Subscription.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Subscription.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -47,40 +48,86 @@ import kotlin.jvm.optionals.getOrNull * of events, you can expect an invoice to contain usage-based charges for the previous period, and * a recurring fee for the following period. */ -@JsonDeserialize(builder = Subscription.Builder::class) @NoAutoDetect class Subscription +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -348,6 +395,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Subscription = apply { if (!validated) { metadata().validate() @@ -419,32 +468,32 @@ private constructor( @JvmSynthetic internal fun from(subscription: Subscription) = apply { - this.metadata = subscription.metadata - this.id = subscription.id - this.customer = subscription.customer - this.plan = subscription.plan - this.startDate = subscription.startDate - this.endDate = subscription.endDate - this.createdAt = subscription.createdAt - this.currentBillingPeriodStartDate = subscription.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = subscription.currentBillingPeriodEndDate - this.status = subscription.status - this.trialInfo = subscription.trialInfo - this.activePlanPhaseOrder = subscription.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = subscription.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = subscription.defaultInvoiceMemo - this.autoCollection = subscription.autoCollection - this.netTerms = subscription.netTerms - this.redeemedCoupon = subscription.redeemedCoupon - this.billingCycleDay = subscription.billingCycleDay - this.billingCycleAnchorConfiguration = subscription.billingCycleAnchorConfiguration - this.invoicingThreshold = subscription.invoicingThreshold - this.priceIntervals = subscription.priceIntervals - this.adjustmentIntervals = subscription.adjustmentIntervals - this.discountIntervals = subscription.discountIntervals - this.minimumIntervals = subscription.minimumIntervals - this.maximumIntervals = subscription.maximumIntervals - additionalProperties(subscription.additionalProperties) + metadata = subscription.metadata + id = subscription.id + customer = subscription.customer + plan = subscription.plan + startDate = subscription.startDate + endDate = subscription.endDate + createdAt = subscription.createdAt + currentBillingPeriodStartDate = subscription.currentBillingPeriodStartDate + currentBillingPeriodEndDate = subscription.currentBillingPeriodEndDate + status = subscription.status + trialInfo = subscription.trialInfo + activePlanPhaseOrder = subscription.activePlanPhaseOrder + fixedFeeQuantitySchedule = subscription.fixedFeeQuantitySchedule + defaultInvoiceMemo = subscription.defaultInvoiceMemo + autoCollection = subscription.autoCollection + netTerms = subscription.netTerms + redeemedCoupon = subscription.redeemedCoupon + billingCycleDay = subscription.billingCycleDay + billingCycleAnchorConfiguration = subscription.billingCycleAnchorConfiguration + invoicingThreshold = subscription.invoicingThreshold + priceIntervals = subscription.priceIntervals + adjustmentIntervals = subscription.adjustmentIntervals + discountIntervals = subscription.discountIntervals + minimumIntervals = subscription.minimumIntervals + maximumIntervals = subscription.maximumIntervals + additionalProperties = subscription.additionalProperties.toMutableMap() } /** @@ -459,13 +508,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -505,8 +552,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -523,30 +568,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -562,8 +599,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -581,8 +616,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -590,14 +623,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -605,8 +634,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -614,8 +641,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -631,8 +656,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -649,8 +672,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -667,15 +688,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -694,8 +711,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -704,8 +719,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -713,8 +726,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -724,8 +735,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -735,8 +744,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -746,8 +753,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -757,8 +762,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -768,26 +771,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Subscription = Subscription( metadata, @@ -819,20 +825,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -867,6 +880,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -896,24 +911,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -922,8 +933,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -932,8 +941,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -941,8 +948,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -950,18 +955,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1215,22 +1225,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1297,6 +1320,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1330,20 +1355,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1357,8 +1381,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1368,8 +1390,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1379,8 +1399,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1389,15 +1407,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1413,20 +1427,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1434,6 +1445,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1517,22 +1536,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1600,6 +1632,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1634,21 +1668,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1662,8 +1694,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1673,8 +1703,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1684,8 +1712,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1694,15 +1720,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1718,20 +1740,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1739,6 +1758,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1822,22 +1849,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1902,6 +1942,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1935,20 +1977,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1962,8 +2003,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1973,8 +2012,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1984,8 +2021,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1994,15 +2029,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2018,20 +2049,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2039,6 +2067,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2122,23 +2158,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2209,6 +2260,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2244,21 +2297,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2272,8 +2323,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2283,8 +2332,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2294,8 +2341,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2304,15 +2349,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2328,8 +2369,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2338,18 +2377,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2357,6 +2393,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2441,22 +2485,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2521,6 +2578,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2554,20 +2613,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2581,8 +2638,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2592,8 +2647,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2603,8 +2656,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2613,15 +2664,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2637,20 +2684,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2658,6 +2702,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2760,18 +2812,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2816,6 +2869,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2842,10 +2897,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2862,8 +2918,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2876,8 +2930,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2890,24 +2942,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3115,21 +3170,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3175,6 +3241,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3206,21 +3274,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3230,8 +3296,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3240,8 +3304,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3250,8 +3312,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3259,8 +3319,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3270,8 +3328,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3279,12 +3335,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3292,6 +3347,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3373,21 +3436,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3435,6 +3509,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3466,21 +3542,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3494,8 +3568,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3504,8 +3576,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3514,8 +3584,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3523,8 +3591,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3534,8 +3600,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3543,12 +3607,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3556,6 +3619,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3637,21 +3708,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3703,6 +3785,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3734,20 +3818,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3763,8 +3845,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3773,8 +3853,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3783,8 +3861,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3792,8 +3868,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3803,8 +3877,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3812,12 +3884,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3825,6 +3896,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3907,19 +3986,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3941,6 +4027,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3968,53 +4056,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4043,20 +4128,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4104,6 +4198,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4133,20 +4229,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4155,8 +4249,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4164,8 +4256,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4175,8 +4265,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4192,26 +4280,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4246,19 +4337,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4278,23 +4370,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4315,20 +4412,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4376,6 +4482,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4405,20 +4513,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4427,8 +4533,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4436,8 +4540,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4447,8 +4549,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4464,26 +4564,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4517,23 +4620,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5088,6 +5205,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5124,21 +5243,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5151,8 +5268,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5167,8 +5282,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5629,8 +5742,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5638,8 +5749,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5656,8 +5765,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5675,8 +5782,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5694,26 +5799,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5728,18 +5836,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5756,6 +5869,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5781,41 +5896,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5823,6 +5932,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5868,18 +5985,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5897,6 +6019,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5922,46 +6046,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6052,16 +6175,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6071,6 +6195,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6092,30 +6218,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCancelParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCancelParams.kt index cc7d2a15..90a6fd2d 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCancelParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCancelParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -62,24 +62,25 @@ constructor( } } - @JsonDeserialize(builder = SubscriptionCancelBody.Builder::class) @NoAutoDetect class SubscriptionCancelBody + @JsonCreator internal constructor( - private val cancelOption: CancelOption?, - private val cancellationDate: OffsetDateTime?, - private val additionalProperties: Map, + @JsonProperty("cancel_option") private val cancelOption: CancelOption, + @JsonProperty("cancellation_date") private val cancellationDate: OffsetDateTime?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Determines the timing of subscription cancellation */ - @JsonProperty("cancel_option") fun cancelOption(): CancelOption? = cancelOption + @JsonProperty("cancel_option") fun cancelOption(): CancelOption = cancelOption /** * The date that the cancellation should take effect. This parameter can only be passed if * the `cancel_option` is `requested_date`. */ @JsonProperty("cancellation_date") - fun cancellationDate(): OffsetDateTime? = cancellationDate + fun cancellationDate(): Optional = Optional.ofNullable(cancellationDate) @JsonAnyGetter @ExcludeMissing @@ -100,13 +101,12 @@ constructor( @JvmSynthetic internal fun from(subscriptionCancelBody: SubscriptionCancelBody) = apply { - this.cancelOption = subscriptionCancelBody.cancelOption - this.cancellationDate = subscriptionCancelBody.cancellationDate - additionalProperties(subscriptionCancelBody.additionalProperties) + cancelOption = subscriptionCancelBody.cancelOption + cancellationDate = subscriptionCancelBody.cancellationDate + additionalProperties = subscriptionCancelBody.additionalProperties.toMutableMap() } /** Determines the timing of subscription cancellation */ - @JsonProperty("cancel_option") fun cancelOption(cancelOption: CancelOption) = apply { this.cancelOption = cancelOption } @@ -115,25 +115,29 @@ constructor( * The date that the cancellation should take effect. This parameter can only be passed * if the `cancel_option` is `requested_date`. */ - @JsonProperty("cancellation_date") fun cancellationDate(cancellationDate: OffsetDateTime) = apply { this.cancellationDate = cancellationDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionCancelBody = SubscriptionCancelBody( checkNotNull(cancelOption) { "`cancelOption` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCancelResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCancelResponse.kt index 121df0cc..8c914552 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCancelResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCancelResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionCancelResponse.Builder::class) @NoAutoDetect class SubscriptionCancelResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionCancelResponse = apply { if (!validated) { metadata().validate() @@ -401,35 +450,33 @@ private constructor( @JvmSynthetic internal fun from(subscriptionCancelResponse: SubscriptionCancelResponse) = apply { - this.metadata = subscriptionCancelResponse.metadata - this.id = subscriptionCancelResponse.id - this.customer = subscriptionCancelResponse.customer - this.plan = subscriptionCancelResponse.plan - this.startDate = subscriptionCancelResponse.startDate - this.endDate = subscriptionCancelResponse.endDate - this.createdAt = subscriptionCancelResponse.createdAt - this.currentBillingPeriodStartDate = - subscriptionCancelResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = - subscriptionCancelResponse.currentBillingPeriodEndDate - this.status = subscriptionCancelResponse.status - this.trialInfo = subscriptionCancelResponse.trialInfo - this.activePlanPhaseOrder = subscriptionCancelResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = subscriptionCancelResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = subscriptionCancelResponse.defaultInvoiceMemo - this.autoCollection = subscriptionCancelResponse.autoCollection - this.netTerms = subscriptionCancelResponse.netTerms - this.redeemedCoupon = subscriptionCancelResponse.redeemedCoupon - this.billingCycleDay = subscriptionCancelResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + metadata = subscriptionCancelResponse.metadata + id = subscriptionCancelResponse.id + customer = subscriptionCancelResponse.customer + plan = subscriptionCancelResponse.plan + startDate = subscriptionCancelResponse.startDate + endDate = subscriptionCancelResponse.endDate + createdAt = subscriptionCancelResponse.createdAt + currentBillingPeriodStartDate = subscriptionCancelResponse.currentBillingPeriodStartDate + currentBillingPeriodEndDate = subscriptionCancelResponse.currentBillingPeriodEndDate + status = subscriptionCancelResponse.status + trialInfo = subscriptionCancelResponse.trialInfo + activePlanPhaseOrder = subscriptionCancelResponse.activePlanPhaseOrder + fixedFeeQuantitySchedule = subscriptionCancelResponse.fixedFeeQuantitySchedule + defaultInvoiceMemo = subscriptionCancelResponse.defaultInvoiceMemo + autoCollection = subscriptionCancelResponse.autoCollection + netTerms = subscriptionCancelResponse.netTerms + redeemedCoupon = subscriptionCancelResponse.redeemedCoupon + billingCycleDay = subscriptionCancelResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionCancelResponse.billingCycleAnchorConfiguration - this.invoicingThreshold = subscriptionCancelResponse.invoicingThreshold - this.priceIntervals = subscriptionCancelResponse.priceIntervals - this.adjustmentIntervals = subscriptionCancelResponse.adjustmentIntervals - this.discountIntervals = subscriptionCancelResponse.discountIntervals - this.minimumIntervals = subscriptionCancelResponse.minimumIntervals - this.maximumIntervals = subscriptionCancelResponse.maximumIntervals - additionalProperties(subscriptionCancelResponse.additionalProperties) + invoicingThreshold = subscriptionCancelResponse.invoicingThreshold + priceIntervals = subscriptionCancelResponse.priceIntervals + adjustmentIntervals = subscriptionCancelResponse.adjustmentIntervals + discountIntervals = subscriptionCancelResponse.discountIntervals + minimumIntervals = subscriptionCancelResponse.minimumIntervals + maximumIntervals = subscriptionCancelResponse.maximumIntervals + additionalProperties = subscriptionCancelResponse.additionalProperties.toMutableMap() } /** @@ -444,13 +491,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -490,8 +535,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -508,30 +551,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -547,8 +582,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -566,8 +599,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -575,14 +606,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -590,8 +617,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -599,8 +624,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -616,8 +639,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -634,8 +655,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -652,15 +671,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -679,8 +694,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -689,8 +702,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -698,8 +709,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -709,8 +718,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -720,8 +727,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -731,8 +736,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -742,8 +745,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -753,26 +754,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionCancelResponse = SubscriptionCancelResponse( metadata, @@ -804,20 +808,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -852,6 +863,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -881,24 +894,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -907,8 +916,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -917,8 +924,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -926,8 +931,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -935,18 +938,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1200,22 +1208,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1282,6 +1303,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1315,20 +1338,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1342,8 +1364,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1353,8 +1373,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1364,8 +1382,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1374,15 +1390,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1398,20 +1410,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1419,6 +1428,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1502,22 +1519,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1585,6 +1615,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1619,21 +1651,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1647,8 +1677,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1658,8 +1686,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1669,8 +1695,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1679,15 +1703,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1703,20 +1723,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1724,6 +1741,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1807,22 +1832,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1887,6 +1925,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1920,20 +1960,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1947,8 +1986,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1958,8 +1995,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1969,8 +2004,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1979,15 +2012,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2003,20 +2032,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2024,6 +2050,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2107,23 +2141,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2194,6 +2243,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2229,21 +2280,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2257,8 +2306,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2268,8 +2315,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2279,8 +2324,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2289,15 +2332,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2313,8 +2352,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2323,18 +2360,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2342,6 +2376,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2426,22 +2468,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2506,6 +2561,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2539,20 +2596,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2566,8 +2621,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2577,8 +2630,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2588,8 +2639,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2598,15 +2647,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2622,20 +2667,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2643,6 +2685,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2745,18 +2795,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2801,6 +2852,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2827,10 +2880,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2847,8 +2901,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2861,8 +2913,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2875,24 +2925,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3100,21 +3153,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3160,6 +3224,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3191,21 +3257,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3215,8 +3279,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3225,8 +3287,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3235,8 +3295,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3244,8 +3302,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3255,8 +3311,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3264,12 +3318,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3277,6 +3330,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3358,21 +3419,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3420,6 +3492,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3451,21 +3525,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3479,8 +3551,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3489,8 +3559,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3499,8 +3567,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3508,8 +3574,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3519,8 +3583,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3528,12 +3590,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3541,6 +3602,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3622,21 +3691,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3688,6 +3768,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3719,20 +3801,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3748,8 +3828,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3758,8 +3836,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3768,8 +3844,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3777,8 +3851,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3788,8 +3860,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3797,12 +3867,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3810,6 +3879,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3892,19 +3969,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3926,6 +4010,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3953,53 +4039,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4028,20 +4111,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4089,6 +4181,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4118,20 +4212,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4140,8 +4232,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4149,8 +4239,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4160,8 +4248,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4177,26 +4263,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4231,19 +4320,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4263,23 +4353,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4300,20 +4395,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4361,6 +4465,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4390,20 +4496,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4412,8 +4516,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4421,8 +4523,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4432,8 +4532,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4449,26 +4547,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4502,23 +4603,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5073,6 +5188,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5109,21 +5226,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5136,8 +5251,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5152,8 +5265,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5614,8 +5725,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5623,8 +5732,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5641,8 +5748,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5660,8 +5765,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5679,26 +5782,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5713,18 +5819,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5741,6 +5852,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5766,41 +5879,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5808,6 +5915,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5853,18 +5968,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5882,6 +6002,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5907,46 +6029,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6037,16 +6158,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6056,6 +6178,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6077,30 +6201,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCreateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCreateParams.kt index f3dc208d..fd8eb1fc 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCreateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCreateParams.kt @@ -18,12 +18,12 @@ import com.withorb.api.core.BaseSerializer import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField -import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -181,71 +181,80 @@ constructor( @JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams - @JsonDeserialize(builder = SubscriptionCreateBody.Builder::class) @NoAutoDetect class SubscriptionCreateBody + @JsonCreator internal constructor( - private val addAdjustments: List?, - private val addPrices: List?, + @JsonProperty("add_adjustments") private val addAdjustments: List?, + @JsonProperty("add_prices") private val addPrices: List?, + @JsonProperty("align_billing_with_subscription_start_date") private val alignBillingWithSubscriptionStartDate: Boolean?, - private val autoCollection: Boolean?, - private val awsRegion: String?, + @JsonProperty("auto_collection") private val autoCollection: Boolean?, + @JsonProperty("aws_region") private val awsRegion: String?, + @JsonProperty("billing_cycle_anchor_configuration") private val billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration?, - private val couponRedemptionCode: String?, - private val creditsOverageRate: Double?, - private val customerId: String?, - private val defaultInvoiceMemo: String?, - private val endDate: OffsetDateTime?, - private val externalCustomerId: String?, - private val externalMarketplace: ExternalMarketplace?, + @JsonProperty("coupon_redemption_code") private val couponRedemptionCode: String?, + @JsonProperty("credits_overage_rate") private val creditsOverageRate: Double?, + @JsonProperty("customer_id") private val customerId: String?, + @JsonProperty("default_invoice_memo") private val defaultInvoiceMemo: String?, + @JsonProperty("end_date") private val endDate: OffsetDateTime?, + @JsonProperty("external_customer_id") private val externalCustomerId: String?, + @JsonProperty("external_marketplace") private val externalMarketplace: ExternalMarketplace?, + @JsonProperty("external_marketplace_reporting_id") private val externalMarketplaceReportingId: String?, - private val externalPlanId: String?, - private val filter: String?, - private val initialPhaseOrder: Long?, - private val invoicingThreshold: String?, - private val metadata: Metadata?, - private val netTerms: Long?, - private val perCreditOverageAmount: Double?, - private val planId: String?, - private val planVersionNumber: Long?, - private val priceOverrides: List?, - private val removeAdjustments: List?, - private val removePrices: List?, + @JsonProperty("external_plan_id") private val externalPlanId: String?, + @JsonProperty("filter") private val filter: String?, + @JsonProperty("initial_phase_order") private val initialPhaseOrder: Long?, + @JsonProperty("invoicing_threshold") private val invoicingThreshold: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("net_terms") private val netTerms: Long?, + @JsonProperty("per_credit_overage_amount") private val perCreditOverageAmount: Double?, + @JsonProperty("plan_id") private val planId: String?, + @JsonProperty("plan_version_number") private val planVersionNumber: Long?, + @JsonProperty("price_overrides") private val priceOverrides: List?, + @JsonProperty("remove_adjustments") private val removeAdjustments: List?, + @JsonProperty("remove_prices") private val removePrices: List?, + @JsonProperty("replace_adjustments") private val replaceAdjustments: List?, - private val replacePrices: List?, - private val startDate: OffsetDateTime?, - private val trialDurationDays: Long?, - private val additionalProperties: Map, + @JsonProperty("replace_prices") private val replacePrices: List?, + @JsonProperty("start_date") private val startDate: OffsetDateTime?, + @JsonProperty("trial_duration_days") private val trialDurationDays: Long?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * Additional adjustments to be added to the subscription. (Only available for accounts that * have migrated off of legacy subscription overrides) */ - @JsonProperty("add_adjustments") fun addAdjustments(): List? = addAdjustments + @JsonProperty("add_adjustments") + fun addAdjustments(): Optional> = Optional.ofNullable(addAdjustments) /** * Additional prices to be added to the subscription. (Only available for accounts that have * migrated off of legacy subscription overrides) */ - @JsonProperty("add_prices") fun addPrices(): List? = addPrices + @JsonProperty("add_prices") + fun addPrices(): Optional> = Optional.ofNullable(addPrices) @JsonProperty("align_billing_with_subscription_start_date") - fun alignBillingWithSubscriptionStartDate(): Boolean? = - alignBillingWithSubscriptionStartDate + fun alignBillingWithSubscriptionStartDate(): Optional = + Optional.ofNullable(alignBillingWithSubscriptionStartDate) /** * Determines whether issued invoices for this subscription will automatically be charged * with the saved payment method on the due date. If not specified, this defaults to the * behavior configured for this customer. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") + fun autoCollection(): Optional = Optional.ofNullable(autoCollection) - @JsonProperty("aws_region") fun awsRegion(): String? = awsRegion + @JsonProperty("aws_region") + fun awsRegion(): Optional = Optional.ofNullable(awsRegion) @JsonProperty("billing_cycle_anchor_configuration") - fun billingCycleAnchorConfiguration(): BillingCycleAnchorConfiguration? = - billingCycleAnchorConfiguration + fun billingCycleAnchorConfiguration(): Optional = + Optional.ofNullable(billingCycleAnchorConfiguration) /** * Redemption code to be used for this subscription. If the coupon cannot be found by its @@ -253,33 +262,41 @@ constructor( * subscription creation or plan change will not be scheduled. */ @JsonProperty("coupon_redemption_code") - fun couponRedemptionCode(): String? = couponRedemptionCode + fun couponRedemptionCode(): Optional = Optional.ofNullable(couponRedemptionCode) - @JsonProperty("credits_overage_rate") fun creditsOverageRate(): Double? = creditsOverageRate + @JsonProperty("credits_overage_rate") + fun creditsOverageRate(): Optional = Optional.ofNullable(creditsOverageRate) - @JsonProperty("customer_id") fun customerId(): String? = customerId + @JsonProperty("customer_id") + fun customerId(): Optional = Optional.ofNullable(customerId) /** * Determines the default memo on this subscription's invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") fun defaultInvoiceMemo(): String? = defaultInvoiceMemo + @JsonProperty("default_invoice_memo") + fun defaultInvoiceMemo(): Optional = Optional.ofNullable(defaultInvoiceMemo) - @JsonProperty("end_date") fun endDate(): OffsetDateTime? = endDate + @JsonProperty("end_date") + fun endDate(): Optional = Optional.ofNullable(endDate) - @JsonProperty("external_customer_id") fun externalCustomerId(): String? = externalCustomerId + @JsonProperty("external_customer_id") + fun externalCustomerId(): Optional = Optional.ofNullable(externalCustomerId) @JsonProperty("external_marketplace") - fun externalMarketplace(): ExternalMarketplace? = externalMarketplace + fun externalMarketplace(): Optional = + Optional.ofNullable(externalMarketplace) @JsonProperty("external_marketplace_reporting_id") - fun externalMarketplaceReportingId(): String? = externalMarketplaceReportingId + fun externalMarketplaceReportingId(): Optional = + Optional.ofNullable(externalMarketplaceReportingId) /** * The external_plan_id of the plan that the given subscription should be switched to. Note * that either this property or `plan_id` must be specified. */ - @JsonProperty("external_plan_id") fun externalPlanId(): String? = externalPlanId + @JsonProperty("external_plan_id") + fun externalPlanId(): Optional = Optional.ofNullable(externalPlanId) /** * An additional filter to apply to usage queries. This filter must be expressed as a @@ -287,83 +304,93 @@ constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties). If * null, usage queries will not include any additional filter. */ - @JsonProperty("filter") fun filter(): String? = filter + @JsonProperty("filter") fun filter(): Optional = Optional.ofNullable(filter) /** The phase of the plan to start with */ - @JsonProperty("initial_phase_order") fun initialPhaseOrder(): Long? = initialPhaseOrder + @JsonProperty("initial_phase_order") + fun initialPhaseOrder(): Optional = Optional.ofNullable(initialPhaseOrder) /** * When this subscription's accrued usage reaches this threshold, an invoice will be issued * for the subscription. If not specified, invoices will only be issued at the end of the * billing period. */ - @JsonProperty("invoicing_threshold") fun invoicingThreshold(): String? = invoicingThreshold + @JsonProperty("invoicing_threshold") + fun invoicingThreshold(): Optional = Optional.ofNullable(invoicingThreshold) /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * The net terms determines the difference between the invoice date and the issue date for * the invoice. If you intend the invoice to be due on issue, set this to 0. If not * provided, this defaults to the value specified in the plan. */ - @JsonProperty("net_terms") fun netTerms(): Long? = netTerms + @JsonProperty("net_terms") fun netTerms(): Optional = Optional.ofNullable(netTerms) @JsonProperty("per_credit_overage_amount") - fun perCreditOverageAmount(): Double? = perCreditOverageAmount + fun perCreditOverageAmount(): Optional = Optional.ofNullable(perCreditOverageAmount) /** * The plan that the given subscription should be switched to. Note that either this * property or `external_plan_id` must be specified. */ - @JsonProperty("plan_id") fun planId(): String? = planId + @JsonProperty("plan_id") fun planId(): Optional = Optional.ofNullable(planId) /** * Specifies which version of the plan to subscribe to. If null, the default version will be * used. */ - @JsonProperty("plan_version_number") fun planVersionNumber(): Long? = planVersionNumber + @JsonProperty("plan_version_number") + fun planVersionNumber(): Optional = Optional.ofNullable(planVersionNumber) /** Optionally provide a list of overrides for prices on the plan */ - @JsonProperty("price_overrides") fun priceOverrides(): List? = priceOverrides + @JsonProperty("price_overrides") + fun priceOverrides(): Optional> = Optional.ofNullable(priceOverrides) /** * Plan adjustments to be removed from the subscription. (Only available for accounts that * have migrated off of legacy subscription overrides) */ @JsonProperty("remove_adjustments") - fun removeAdjustments(): List? = removeAdjustments + fun removeAdjustments(): Optional> = + Optional.ofNullable(removeAdjustments) /** * Plan prices to be removed from the subscription. (Only available for accounts that have * migrated off of legacy subscription overrides) */ - @JsonProperty("remove_prices") fun removePrices(): List? = removePrices + @JsonProperty("remove_prices") + fun removePrices(): Optional> = Optional.ofNullable(removePrices) /** * Plan adjustments to be replaced with additional adjustments on the subscription. (Only * available for accounts that have migrated off of legacy subscription overrides) */ @JsonProperty("replace_adjustments") - fun replaceAdjustments(): List? = replaceAdjustments + fun replaceAdjustments(): Optional> = + Optional.ofNullable(replaceAdjustments) /** * Plan prices to be replaced with additional prices on the subscription. (Only available * for accounts that have migrated off of legacy subscription overrides) */ - @JsonProperty("replace_prices") fun replacePrices(): List? = replacePrices + @JsonProperty("replace_prices") + fun replacePrices(): Optional> = Optional.ofNullable(replacePrices) - @JsonProperty("start_date") fun startDate(): OffsetDateTime? = startDate + @JsonProperty("start_date") + fun startDate(): Optional = Optional.ofNullable(startDate) /** * The duration of the trial period in days. If not provided, this defaults to the value * specified in the plan. If `0` is provided, the trial on the plan will be skipped. */ - @JsonProperty("trial_duration_days") fun trialDurationDays(): Long? = trialDurationDays + @JsonProperty("trial_duration_days") + fun trialDurationDays(): Optional = Optional.ofNullable(trialDurationDays) @JsonAnyGetter @ExcludeMissing @@ -412,47 +439,46 @@ constructor( @JvmSynthetic internal fun from(subscriptionCreateBody: SubscriptionCreateBody) = apply { - this.addAdjustments = subscriptionCreateBody.addAdjustments - this.addPrices = subscriptionCreateBody.addPrices - this.alignBillingWithSubscriptionStartDate = + addAdjustments = subscriptionCreateBody.addAdjustments?.toMutableList() + addPrices = subscriptionCreateBody.addPrices?.toMutableList() + alignBillingWithSubscriptionStartDate = subscriptionCreateBody.alignBillingWithSubscriptionStartDate - this.autoCollection = subscriptionCreateBody.autoCollection - this.awsRegion = subscriptionCreateBody.awsRegion - this.billingCycleAnchorConfiguration = + autoCollection = subscriptionCreateBody.autoCollection + awsRegion = subscriptionCreateBody.awsRegion + billingCycleAnchorConfiguration = subscriptionCreateBody.billingCycleAnchorConfiguration - this.couponRedemptionCode = subscriptionCreateBody.couponRedemptionCode - this.creditsOverageRate = subscriptionCreateBody.creditsOverageRate - this.customerId = subscriptionCreateBody.customerId - this.defaultInvoiceMemo = subscriptionCreateBody.defaultInvoiceMemo - this.endDate = subscriptionCreateBody.endDate - this.externalCustomerId = subscriptionCreateBody.externalCustomerId - this.externalMarketplace = subscriptionCreateBody.externalMarketplace - this.externalMarketplaceReportingId = + couponRedemptionCode = subscriptionCreateBody.couponRedemptionCode + creditsOverageRate = subscriptionCreateBody.creditsOverageRate + customerId = subscriptionCreateBody.customerId + defaultInvoiceMemo = subscriptionCreateBody.defaultInvoiceMemo + endDate = subscriptionCreateBody.endDate + externalCustomerId = subscriptionCreateBody.externalCustomerId + externalMarketplace = subscriptionCreateBody.externalMarketplace + externalMarketplaceReportingId = subscriptionCreateBody.externalMarketplaceReportingId - this.externalPlanId = subscriptionCreateBody.externalPlanId - this.filter = subscriptionCreateBody.filter - this.initialPhaseOrder = subscriptionCreateBody.initialPhaseOrder - this.invoicingThreshold = subscriptionCreateBody.invoicingThreshold - this.metadata = subscriptionCreateBody.metadata - this.netTerms = subscriptionCreateBody.netTerms - this.perCreditOverageAmount = subscriptionCreateBody.perCreditOverageAmount - this.planId = subscriptionCreateBody.planId - this.planVersionNumber = subscriptionCreateBody.planVersionNumber - this.priceOverrides = subscriptionCreateBody.priceOverrides - this.removeAdjustments = subscriptionCreateBody.removeAdjustments - this.removePrices = subscriptionCreateBody.removePrices - this.replaceAdjustments = subscriptionCreateBody.replaceAdjustments - this.replacePrices = subscriptionCreateBody.replacePrices - this.startDate = subscriptionCreateBody.startDate - this.trialDurationDays = subscriptionCreateBody.trialDurationDays - additionalProperties(subscriptionCreateBody.additionalProperties) + externalPlanId = subscriptionCreateBody.externalPlanId + filter = subscriptionCreateBody.filter + initialPhaseOrder = subscriptionCreateBody.initialPhaseOrder + invoicingThreshold = subscriptionCreateBody.invoicingThreshold + metadata = subscriptionCreateBody.metadata + netTerms = subscriptionCreateBody.netTerms + perCreditOverageAmount = subscriptionCreateBody.perCreditOverageAmount + planId = subscriptionCreateBody.planId + planVersionNumber = subscriptionCreateBody.planVersionNumber + priceOverrides = subscriptionCreateBody.priceOverrides?.toMutableList() + removeAdjustments = subscriptionCreateBody.removeAdjustments?.toMutableList() + removePrices = subscriptionCreateBody.removePrices?.toMutableList() + replaceAdjustments = subscriptionCreateBody.replaceAdjustments?.toMutableList() + replacePrices = subscriptionCreateBody.replacePrices?.toMutableList() + startDate = subscriptionCreateBody.startDate + trialDurationDays = subscriptionCreateBody.trialDurationDays + additionalProperties = subscriptionCreateBody.additionalProperties.toMutableMap() } /** * Additional adjustments to be added to the subscription. (Only available for accounts * that have migrated off of legacy subscription overrides) */ - @JsonProperty("add_adjustments") fun addAdjustments(addAdjustments: List) = apply { this.addAdjustments = addAdjustments } @@ -461,10 +487,8 @@ constructor( * Additional prices to be added to the subscription. (Only available for accounts that * have migrated off of legacy subscription overrides) */ - @JsonProperty("add_prices") fun addPrices(addPrices: List) = apply { this.addPrices = addPrices } - @JsonProperty("align_billing_with_subscription_start_date") fun alignBillingWithSubscriptionStartDate( alignBillingWithSubscriptionStartDate: Boolean ) = apply { @@ -476,15 +500,12 @@ constructor( * charged with the saved payment method on the due date. If not specified, this * defaults to the behavior configured for this customer. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } - @JsonProperty("aws_region") fun awsRegion(awsRegion: String) = apply { this.awsRegion = awsRegion } - @JsonProperty("billing_cycle_anchor_configuration") fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -494,42 +515,34 @@ constructor( * its redemption code, or cannot be redeemed, an error response will be returned and * the subscription creation or plan change will not be scheduled. */ - @JsonProperty("coupon_redemption_code") fun couponRedemptionCode(couponRedemptionCode: String) = apply { this.couponRedemptionCode = couponRedemptionCode } - @JsonProperty("credits_overage_rate") fun creditsOverageRate(creditsOverageRate: Double) = apply { this.creditsOverageRate = creditsOverageRate } - @JsonProperty("customer_id") fun customerId(customerId: String) = apply { this.customerId = customerId } /** * Determines the default memo on this subscription's invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") fun defaultInvoiceMemo(defaultInvoiceMemo: String) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } - @JsonProperty("end_date") fun endDate(endDate: OffsetDateTime) = apply { this.endDate = endDate } - @JsonProperty("external_customer_id") fun externalCustomerId(externalCustomerId: String) = apply { this.externalCustomerId = externalCustomerId } - @JsonProperty("external_marketplace") fun externalMarketplace(externalMarketplace: ExternalMarketplace) = apply { this.externalMarketplace = externalMarketplace } - @JsonProperty("external_marketplace_reporting_id") fun externalMarketplaceReportingId(externalMarketplaceReportingId: String) = apply { this.externalMarketplaceReportingId = externalMarketplaceReportingId } @@ -538,7 +551,6 @@ constructor( * The external_plan_id of the plan that the given subscription should be switched to. * Note that either this property or `plan_id` must be specified. */ - @JsonProperty("external_plan_id") fun externalPlanId(externalPlanId: String) = apply { this.externalPlanId = externalPlanId } @@ -549,10 +561,9 @@ constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties). If * null, usage queries will not include any additional filter. */ - @JsonProperty("filter") fun filter(filter: String) = apply { this.filter = filter } + fun filter(filter: String) = apply { this.filter = filter } /** The phase of the plan to start with */ - @JsonProperty("initial_phase_order") fun initialPhaseOrder(initialPhaseOrder: Long) = apply { this.initialPhaseOrder = initialPhaseOrder } @@ -562,7 +573,6 @@ constructor( * issued for the subscription. If not specified, invoices will only be issued at the * end of the billing period. */ - @JsonProperty("invoicing_threshold") fun invoicingThreshold(invoicingThreshold: String) = apply { this.invoicingThreshold = invoicingThreshold } @@ -572,7 +582,6 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** @@ -580,10 +589,8 @@ constructor( * for the invoice. If you intend the invoice to be due on issue, set this to 0. If not * provided, this defaults to the value specified in the plan. */ - @JsonProperty("net_terms") fun netTerms(netTerms: Long) = apply { this.netTerms = netTerms } - @JsonProperty("per_credit_overage_amount") fun perCreditOverageAmount(perCreditOverageAmount: Double) = apply { this.perCreditOverageAmount = perCreditOverageAmount } @@ -592,19 +599,17 @@ constructor( * The plan that the given subscription should be switched to. Note that either this * property or `external_plan_id` must be specified. */ - @JsonProperty("plan_id") fun planId(planId: String) = apply { this.planId = planId } + fun planId(planId: String) = apply { this.planId = planId } /** * Specifies which version of the plan to subscribe to. If null, the default version * will be used. */ - @JsonProperty("plan_version_number") fun planVersionNumber(planVersionNumber: Long) = apply { this.planVersionNumber = planVersionNumber } /** Optionally provide a list of overrides for prices on the plan */ - @JsonProperty("price_overrides") fun priceOverrides(priceOverrides: List) = apply { this.priceOverrides = priceOverrides } @@ -613,7 +618,6 @@ constructor( * Plan adjustments to be removed from the subscription. (Only available for accounts * that have migrated off of legacy subscription overrides) */ - @JsonProperty("remove_adjustments") fun removeAdjustments(removeAdjustments: List) = apply { this.removeAdjustments = removeAdjustments } @@ -622,7 +626,6 @@ constructor( * Plan prices to be removed from the subscription. (Only available for accounts that * have migrated off of legacy subscription overrides) */ - @JsonProperty("remove_prices") fun removePrices(removePrices: List) = apply { this.removePrices = removePrices } @@ -631,7 +634,6 @@ constructor( * Plan adjustments to be replaced with additional adjustments on the subscription. * (Only available for accounts that have migrated off of legacy subscription overrides) */ - @JsonProperty("replace_adjustments") fun replaceAdjustments(replaceAdjustments: List) = apply { this.replaceAdjustments = replaceAdjustments } @@ -640,37 +642,39 @@ constructor( * Plan prices to be replaced with additional prices on the subscription. (Only * available for accounts that have migrated off of legacy subscription overrides) */ - @JsonProperty("replace_prices") fun replacePrices(replacePrices: List) = apply { this.replacePrices = replacePrices } - @JsonProperty("start_date") fun startDate(startDate: OffsetDateTime) = apply { this.startDate = startDate } /** * The duration of the trial period in days. If not provided, this defaults to the value * specified in the plan. If `0` is provided, the trial on the plan will be skipped. */ - @JsonProperty("trial_duration_days") fun trialDurationDays(trialDurationDays: Long) = apply { this.trialDurationDays = trialDurationDays } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionCreateBody = SubscriptionCreateBody( addAdjustments?.toImmutable(), @@ -1206,36 +1210,40 @@ constructor( ) } - @JsonDeserialize(builder = AddAdjustment.Builder::class) @NoAutoDetect class AddAdjustment + @JsonCreator private constructor( - private val adjustment: Adjustment?, - private val startDate: OffsetDateTime?, - private val endDate: OffsetDateTime?, - private val planPhaseOrder: Long?, - private val additionalProperties: Map, + @JsonProperty("adjustment") private val adjustment: Adjustment, + @JsonProperty("start_date") private val startDate: OffsetDateTime?, + @JsonProperty("end_date") private val endDate: OffsetDateTime?, + @JsonProperty("plan_phase_order") private val planPhaseOrder: Long?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(): Adjustment? = adjustment + @JsonProperty("adjustment") fun adjustment(): Adjustment = adjustment /** * The start date of the adjustment interval. This is the date that the adjustment will * start affecting prices on the subscription. If null, the adjustment will start when the * phase or subscription starts. */ - @JsonProperty("start_date") fun startDate(): OffsetDateTime? = startDate + @JsonProperty("start_date") + fun startDate(): Optional = Optional.ofNullable(startDate) /** * The end date of the adjustment interval. This is the date that the adjustment will stop * affecting prices on the subscription. If null, the adjustment will start when the phase * or subscription starts. */ - @JsonProperty("end_date") fun endDate(): OffsetDateTime? = endDate + @JsonProperty("end_date") + fun endDate(): Optional = Optional.ofNullable(endDate) /** The phase to add this adjustment to. */ - @JsonProperty("plan_phase_order") fun planPhaseOrder(): Long? = planPhaseOrder + @JsonProperty("plan_phase_order") + fun planPhaseOrder(): Optional = Optional.ofNullable(planPhaseOrder) @JsonAnyGetter @ExcludeMissing @@ -1258,15 +1266,14 @@ constructor( @JvmSynthetic internal fun from(addAdjustment: AddAdjustment) = apply { - this.adjustment = addAdjustment.adjustment - this.startDate = addAdjustment.startDate - this.endDate = addAdjustment.endDate - this.planPhaseOrder = addAdjustment.planPhaseOrder - additionalProperties(addAdjustment.additionalProperties) + adjustment = addAdjustment.adjustment + startDate = addAdjustment.startDate + endDate = addAdjustment.endDate + planPhaseOrder = addAdjustment.planPhaseOrder + additionalProperties = addAdjustment.additionalProperties.toMutableMap() } /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(adjustment: Adjustment) = apply { this.adjustment = adjustment } /** @@ -1274,7 +1281,6 @@ constructor( * start affecting prices on the subscription. If null, the adjustment will start when * the phase or subscription starts. */ - @JsonProperty("start_date") fun startDate(startDate: OffsetDateTime) = apply { this.startDate = startDate } /** @@ -1282,29 +1288,32 @@ constructor( * stop affecting prices on the subscription. If null, the adjustment will start when * the phase or subscription starts. */ - @JsonProperty("end_date") fun endDate(endDate: OffsetDateTime) = apply { this.endDate = endDate } /** The phase to add this adjustment to. */ - @JsonProperty("plan_phase_order") fun planPhaseOrder(planPhaseOrder: Long) = apply { this.planPhaseOrder = planPhaseOrder } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddAdjustment = AddAdjustment( checkNotNull(adjustment) { "`adjustment` is required but was not set" }, @@ -1327,8 +1336,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newPercentageDiscount(): Optional = Optional.ofNullable(newPercentageDiscount) @@ -1379,26 +1386,6 @@ constructor( } } - fun validate(): Adjustment = apply { - if (!validated) { - if ( - newPercentageDiscount == null && - newUsageDiscount == null && - newAmountDiscount == null && - newMinimum == null && - newMaximum == null - ) { - throw OrbInvalidDataException("Unknown Adjustment: $_json") - } - newPercentageDiscount?.validate() - newUsageDiscount?.validate() - newAmountDiscount?.validate() - newMinimum?.validate() - newMaximum?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -1468,40 +1455,29 @@ constructor( when (adjustmentType) { "percentage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newPercentageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newPercentageDiscount = it, _json = json) + } } "usage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newUsageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newUsageDiscount = it, _json = json) + } } "amount_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newAmountDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newAmountDiscount = it, _json = json) + } } "minimum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMinimum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMinimum = it, _json = json) + } } "maximum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMaximum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMaximum = it, _json = json) + } } } @@ -1531,70 +1507,39 @@ constructor( } } - @JsonDeserialize(builder = NewPercentageDiscount.Builder::class) @NoAutoDetect class NewPercentageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun percentageDiscount(): Double = - percentageDiscount.getRequired("percentage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType @JsonProperty("percentage_discount") - @ExcludeMissing - fun _percentageDiscount() = percentageDiscount + fun percentageDiscount(): Double = percentageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPercentageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - percentageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1604,29 +1549,24 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var percentageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var percentageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPercentageDiscount: NewPercentageDiscount) = apply { - this.appliesToPriceIds = newPercentageDiscount.appliesToPriceIds - this.isInvoiceLevel = newPercentageDiscount.isInvoiceLevel - this.adjustmentType = newPercentageDiscount.adjustmentType - this.percentageDiscount = newPercentageDiscount.percentageDiscount - additionalProperties(newPercentageDiscount.additionalProperties) + appliesToPriceIds = newPercentageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newPercentageDiscount.isInvoiceLevel + adjustmentType = newPercentageDiscount.adjustmentType + percentageDiscount = newPercentageDiscount.percentageDiscount + additionalProperties = + newPercentageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1634,45 +1574,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun percentageDiscount(percentageDiscount: Double) = - percentageDiscount(JsonField.of(percentageDiscount)) - - @JsonProperty("percentage_discount") - @ExcludeMissing - fun percentageDiscount(percentageDiscount: JsonField) = apply { + fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1680,12 +1600,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPercentageDiscount = NewPercentageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - percentageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(percentageDiscount) { + "`percentageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -1760,67 +1695,38 @@ constructor( "NewPercentageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewUsageDiscount.Builder::class) @NoAutoDetect class NewUsageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("usage_discount") private val usageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun usageDiscount(): Double = usageDiscount.getRequired("usage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("usage_discount") @ExcludeMissing fun _usageDiscount() = usageDiscount + @JsonProperty("usage_discount") fun usageDiscount(): Double = usageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewUsageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - usageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1830,29 +1736,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var usageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var usageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newUsageDiscount: NewUsageDiscount) = apply { - this.appliesToPriceIds = newUsageDiscount.appliesToPriceIds - this.isInvoiceLevel = newUsageDiscount.isInvoiceLevel - this.adjustmentType = newUsageDiscount.adjustmentType - this.usageDiscount = newUsageDiscount.usageDiscount - additionalProperties(newUsageDiscount.additionalProperties) + appliesToPriceIds = newUsageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newUsageDiscount.isInvoiceLevel + adjustmentType = newUsageDiscount.adjustmentType + usageDiscount = newUsageDiscount.usageDiscount + additionalProperties = newUsageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1860,45 +1760,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun usageDiscount(usageDiscount: Double) = - usageDiscount(JsonField.of(usageDiscount)) - - @JsonProperty("usage_discount") - @ExcludeMissing - fun usageDiscount(usageDiscount: JsonField) = apply { + fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1906,12 +1786,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewUsageDiscount = NewUsageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - usageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(usageDiscount) { + "`usageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -1986,69 +1881,38 @@ constructor( "NewUsageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewAmountDiscount.Builder::class) @NoAutoDetect class NewAmountDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("amount_discount") private val amountDiscount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun amountDiscount(): String = amountDiscount.getRequired("amount_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("amount_discount") - @ExcludeMissing - fun _amountDiscount() = amountDiscount + @JsonProperty("amount_discount") fun amountDiscount(): String = amountDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewAmountDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - amountDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2058,29 +1922,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var amountDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var amountDiscount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newAmountDiscount: NewAmountDiscount) = apply { - this.appliesToPriceIds = newAmountDiscount.appliesToPriceIds - this.isInvoiceLevel = newAmountDiscount.isInvoiceLevel - this.adjustmentType = newAmountDiscount.adjustmentType - this.amountDiscount = newAmountDiscount.amountDiscount - additionalProperties(newAmountDiscount.additionalProperties) + appliesToPriceIds = newAmountDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newAmountDiscount.isInvoiceLevel + adjustmentType = newAmountDiscount.adjustmentType + amountDiscount = newAmountDiscount.amountDiscount + additionalProperties = newAmountDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2088,45 +1946,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun amountDiscount(amountDiscount: String) = - amountDiscount(JsonField.of(amountDiscount)) - - @JsonProperty("amount_discount") - @ExcludeMissing - fun amountDiscount(amountDiscount: JsonField) = apply { + fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2134,12 +1972,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewAmountDiscount = NewAmountDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - amountDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(amountDiscount) { + "`amountDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -2214,75 +2067,42 @@ constructor( "NewAmountDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMinimum.Builder::class) @NoAutoDetect class NewMinimum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("item_id") private val itemId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(): String = itemId.getRequired("item_id") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("minimum_amount") @ExcludeMissing fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMinimum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - minimumAmount() - itemId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2292,31 +2112,25 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var minimumAmount: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var minimumAmount: String? = null + private var itemId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMinimum: NewMinimum) = apply { - this.appliesToPriceIds = newMinimum.appliesToPriceIds - this.isInvoiceLevel = newMinimum.isInvoiceLevel - this.adjustmentType = newMinimum.adjustmentType - this.minimumAmount = newMinimum.minimumAmount - this.itemId = newMinimum.itemId - additionalProperties(newMinimum.additionalProperties) + appliesToPriceIds = newMinimum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMinimum.isInvoiceLevel + adjustmentType = newMinimum.adjustmentType + minimumAmount = newMinimum.minimumAmount + itemId = newMinimum.itemId + additionalProperties = newMinimum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2324,53 +2138,28 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2378,13 +2167,28 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMinimum = NewMinimum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - minimumAmount, - itemId, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, + checkNotNull(itemId) { "`itemId` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -2459,67 +2263,38 @@ constructor( "NewMinimum{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMaximum.Builder::class) @NoAutoDetect class NewMaximum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("maximum_amount") private val maximumAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("maximum_amount") @ExcludeMissing fun _maximumAmount() = maximumAmount + @JsonProperty("maximum_amount") fun maximumAmount(): String = maximumAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMaximum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - maximumAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2529,29 +2304,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var maximumAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMaximum: NewMaximum) = apply { - this.appliesToPriceIds = newMaximum.appliesToPriceIds - this.isInvoiceLevel = newMaximum.isInvoiceLevel - this.adjustmentType = newMaximum.adjustmentType - this.maximumAmount = newMaximum.maximumAmount - additionalProperties(newMaximum.additionalProperties) + appliesToPriceIds = newMaximum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMaximum.isInvoiceLevel + adjustmentType = newMaximum.adjustmentType + maximumAmount = newMaximum.maximumAmount + additionalProperties = newMaximum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2559,45 +2328,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2605,12 +2354,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMaximum = NewMaximum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - maximumAmount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(maximumAmount) { + "`maximumAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -2704,62 +2468,70 @@ constructor( "AddAdjustment{adjustment=$adjustment, startDate=$startDate, endDate=$endDate, planPhaseOrder=$planPhaseOrder, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddPrice.Builder::class) @NoAutoDetect class AddPrice + @JsonCreator private constructor( - private val priceId: String?, - private val externalPriceId: String?, - private val price: Price?, - private val startDate: OffsetDateTime?, - private val endDate: OffsetDateTime?, - private val planPhaseOrder: Long?, - private val minimumAmount: String?, - private val maximumAmount: String?, - private val discounts: List?, - private val additionalProperties: Map, + @JsonProperty("price_id") private val priceId: String?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("price") private val price: Price?, + @JsonProperty("start_date") private val startDate: OffsetDateTime?, + @JsonProperty("end_date") private val endDate: OffsetDateTime?, + @JsonProperty("plan_phase_order") private val planPhaseOrder: Long?, + @JsonProperty("minimum_amount") private val minimumAmount: String?, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("discounts") private val discounts: List?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(): String? = priceId + @JsonProperty("price_id") fun priceId(): Optional = Optional.ofNullable(priceId) /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(): Price? = price + @JsonProperty("price") fun price(): Optional = Optional.ofNullable(price) /** * The start date of the price interval. This is the date that the price will start billing * on the subscription. If null, billing will start when the phase or subscription starts. */ - @JsonProperty("start_date") fun startDate(): OffsetDateTime? = startDate + @JsonProperty("start_date") + fun startDate(): Optional = Optional.ofNullable(startDate) /** * The end date of the price interval. This is the date that the price will stop billing on * the subscription. If null, billing will end when the phase or subscription ends. */ - @JsonProperty("end_date") fun endDate(): OffsetDateTime? = endDate + @JsonProperty("end_date") + fun endDate(): Optional = Optional.ofNullable(endDate) /** The phase to add this price to. */ - @JsonProperty("plan_phase_order") fun planPhaseOrder(): Long? = planPhaseOrder + @JsonProperty("plan_phase_order") + fun planPhaseOrder(): Optional = Optional.ofNullable(planPhaseOrder) /** * [DEPRECATED] Use add_adjustments instead. The subscription's minimum amount for this * price. */ - @JsonProperty("minimum_amount") fun minimumAmount(): String? = minimumAmount + @JsonProperty("minimum_amount") + fun minimumAmount(): Optional = Optional.ofNullable(minimumAmount) /** * [DEPRECATED] Use add_adjustments instead. The subscription's maximum amount for this * price. */ - @JsonProperty("maximum_amount") fun maximumAmount(): String? = maximumAmount + @JsonProperty("maximum_amount") + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** * [DEPRECATED] Use add_adjustments instead. The subscription's discounts for this price. */ - @JsonProperty("discounts") fun discounts(): List? = discounts + @JsonProperty("discounts") + fun discounts(): Optional> = Optional.ofNullable(discounts) @JsonAnyGetter @ExcludeMissing @@ -2787,48 +2559,43 @@ constructor( @JvmSynthetic internal fun from(addPrice: AddPrice) = apply { - this.priceId = addPrice.priceId - this.externalPriceId = addPrice.externalPriceId - this.price = addPrice.price - this.startDate = addPrice.startDate - this.endDate = addPrice.endDate - this.planPhaseOrder = addPrice.planPhaseOrder - this.minimumAmount = addPrice.minimumAmount - this.maximumAmount = addPrice.maximumAmount - this.discounts = addPrice.discounts - additionalProperties(addPrice.additionalProperties) + priceId = addPrice.priceId + externalPriceId = addPrice.externalPriceId + price = addPrice.price + startDate = addPrice.startDate + endDate = addPrice.endDate + planPhaseOrder = addPrice.planPhaseOrder + minimumAmount = addPrice.minimumAmount + maximumAmount = addPrice.maximumAmount + discounts = addPrice.discounts?.toMutableList() + additionalProperties = addPrice.additionalProperties.toMutableMap() } /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(priceId: String) = apply { this.priceId = priceId } /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(price: Price) = apply { this.price = price } + fun price(price: Price) = apply { this.price = price } /** * The start date of the price interval. This is the date that the price will start * billing on the subscription. If null, billing will start when the phase or * subscription starts. */ - @JsonProperty("start_date") fun startDate(startDate: OffsetDateTime) = apply { this.startDate = startDate } /** * The end date of the price interval. This is the date that the price will stop billing * on the subscription. If null, billing will end when the phase or subscription ends. */ - @JsonProperty("end_date") fun endDate(endDate: OffsetDateTime) = apply { this.endDate = endDate } /** The phase to add this price to. */ - @JsonProperty("plan_phase_order") fun planPhaseOrder(planPhaseOrder: Long) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2837,37 +2604,39 @@ constructor( * [DEPRECATED] Use add_adjustments instead. The subscription's minimum amount for this * price. */ - @JsonProperty("minimum_amount") fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** * [DEPRECATED] Use add_adjustments instead. The subscription's maximum amount for this * price. */ - @JsonProperty("maximum_amount") fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** * [DEPRECATED] Use add_adjustments instead. The subscription's discounts for this * price. */ - @JsonProperty("discounts") fun discounts(discounts: List) = apply { this.discounts = discounts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddPrice = AddPrice( priceId, @@ -2883,33 +2652,36 @@ constructor( ) } - @JsonDeserialize(builder = Discount.Builder::class) @NoAutoDetect class Discount + @JsonCreator private constructor( - private val discountType: DiscountType?, - private val percentageDiscount: Double?, - private val usageDiscount: Double?, - private val amountDiscount: String?, - private val additionalProperties: Map, + @JsonProperty("discount_type") private val discountType: DiscountType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double?, + @JsonProperty("usage_discount") private val usageDiscount: Double?, + @JsonProperty("amount_discount") private val amountDiscount: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("discount_type") fun discountType(): DiscountType? = discountType + @JsonProperty("discount_type") fun discountType(): DiscountType = discountType /** * Only available if discount_type is `percentage`. This is a number between 0 and 1. */ @JsonProperty("percentage_discount") - fun percentageDiscount(): Double? = percentageDiscount + fun percentageDiscount(): Optional = Optional.ofNullable(percentageDiscount) /** * Only available if discount_type is `usage`. Number of usage units that this discount * is for */ - @JsonProperty("usage_discount") fun usageDiscount(): Double? = usageDiscount + @JsonProperty("usage_discount") + fun usageDiscount(): Optional = Optional.ofNullable(usageDiscount) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") fun amountDiscount(): String? = amountDiscount + @JsonProperty("amount_discount") + fun amountDiscount(): Optional = Optional.ofNullable(amountDiscount) @JsonAnyGetter @ExcludeMissing @@ -2932,14 +2704,13 @@ constructor( @JvmSynthetic internal fun from(discount: Discount) = apply { - this.discountType = discount.discountType - this.percentageDiscount = discount.percentageDiscount - this.usageDiscount = discount.usageDiscount - this.amountDiscount = discount.amountDiscount - additionalProperties(discount.additionalProperties) + discountType = discount.discountType + percentageDiscount = discount.percentageDiscount + usageDiscount = discount.usageDiscount + amountDiscount = discount.amountDiscount + additionalProperties = discount.additionalProperties.toMutableMap() } - @JsonProperty("discount_type") fun discountType(discountType: DiscountType) = apply { this.discountType = discountType } @@ -2948,7 +2719,6 @@ constructor( * Only available if discount_type is `percentage`. This is a number between 0 * and 1. */ - @JsonProperty("percentage_discount") fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } @@ -2957,25 +2727,22 @@ constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2983,6 +2750,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Discount = Discount( checkNotNull(discountType) { "`discountType` is required but was not set" }, @@ -3117,8 +2892,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newSubscriptionUnitPrice(): Optional = Optional.ofNullable(newSubscriptionUnitPrice) @@ -3367,52 +3140,6 @@ constructor( } } - fun validate(): Price = apply { - if (!validated) { - if ( - newSubscriptionUnitPrice == null && - newSubscriptionPackagePrice == null && - newSubscriptionMatrixPrice == null && - newSubscriptionTieredPrice == null && - newSubscriptionTieredBpsPrice == null && - newSubscriptionBpsPrice == null && - newSubscriptionBulkBpsPrice == null && - newSubscriptionBulkPrice == null && - newSubscriptionThresholdTotalAmountPrice == null && - newSubscriptionTieredPackagePrice == null && - newSubscriptionTieredWithMinimumPrice == null && - newSubscriptionUnitWithPercentPrice == null && - newSubscriptionPackageWithAllocationPrice == null && - newSubscriptionTierWithProrationPrice == null && - newSubscriptionUnitWithProrationPrice == null && - newSubscriptionGroupedAllocationPrice == null && - newSubscriptionGroupedWithProratedMinimumPrice == null && - newSubscriptionBulkWithProrationPrice == null - ) { - throw OrbInvalidDataException("Unknown Price: $_json") - } - newSubscriptionUnitPrice?.validate() - newSubscriptionPackagePrice?.validate() - newSubscriptionMatrixPrice?.validate() - newSubscriptionTieredPrice?.validate() - newSubscriptionTieredBpsPrice?.validate() - newSubscriptionBpsPrice?.validate() - newSubscriptionBulkBpsPrice?.validate() - newSubscriptionBulkPrice?.validate() - newSubscriptionThresholdTotalAmountPrice?.validate() - newSubscriptionTieredPackagePrice?.validate() - newSubscriptionTieredWithMinimumPrice?.validate() - newSubscriptionUnitWithPercentPrice?.validate() - newSubscriptionPackageWithAllocationPrice?.validate() - newSubscriptionTierWithProrationPrice?.validate() - newSubscriptionUnitWithProrationPrice?.validate() - newSubscriptionGroupedAllocationPrice?.validate() - newSubscriptionGroupedWithProratedMinimumPrice?.validate() - newSubscriptionBulkWithProrationPrice?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -3681,76 +3408,55 @@ constructor( when (modelType) { "unit" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionUnitPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionUnitPrice = it, _json = json) + } } "package" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionPackagePrice = it, _json = json) } } "matrix" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionMatrixPrice = it, _json = json) } } "tiered" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionTieredPrice = it, _json = json) } } "tiered_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionTieredBpsPrice = it, _json = json) } } "bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionBpsPrice = it, _json = json) + } } "bulk_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionBulkBpsPrice = it, _json = json) } } "bulk" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionBulkPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionBulkPrice = it, _json = json) + } } "threshold_total_amount" -> { tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionThresholdTotalAmountPrice = it, @@ -3762,9 +3468,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTieredPackagePrice = it, @@ -3776,9 +3480,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTieredWithMinimumPrice = it, @@ -3790,9 +3492,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionUnitWithPercentPrice = it, @@ -3804,9 +3504,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionPackageWithAllocationPrice = it, @@ -3818,9 +3516,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTierWithProrationPrice = it, @@ -3832,9 +3528,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionUnitWithProrationPrice = it, @@ -3846,9 +3540,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionGroupedAllocationPrice = it, @@ -3860,9 +3552,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionGroupedWithProratedMinimumPrice = it, @@ -3874,9 +3564,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionBulkWithProrationPrice = it, @@ -3942,230 +3630,120 @@ constructor( } } - @JsonDeserialize(builder = NewSubscriptionUnitPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_config") private val unitConfig: UnitConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitConfig(): UnitConfig = unitConfig.getRequired("unit_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("unit_config") @ExcludeMissing fun _unitConfig() = unitConfig + @JsonProperty("unit_config") fun unitConfig(): UnitConfig = unitConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4175,48 +3753,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitConfig: UnitConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionUnitPrice: NewSubscriptionUnitPrice) = apply { - this.metadata = newSubscriptionUnitPrice.metadata - this.externalPriceId = newSubscriptionUnitPrice.externalPriceId - this.name = newSubscriptionUnitPrice.name - this.billableMetricId = newSubscriptionUnitPrice.billableMetricId - this.itemId = newSubscriptionUnitPrice.itemId - this.billedInAdvance = newSubscriptionUnitPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionUnitPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionUnitPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionUnitPrice.metadata + externalPriceId = newSubscriptionUnitPrice.externalPriceId + name = newSubscriptionUnitPrice.name + billableMetricId = newSubscriptionUnitPrice.billableMetricId + itemId = newSubscriptionUnitPrice.itemId + billedInAdvance = newSubscriptionUnitPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionUnitPrice.invoiceGroupingKey + cadence = newSubscriptionUnitPrice.cadence + billingCycleConfiguration = newSubscriptionUnitPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitPrice.conversionRate - this.modelType = newSubscriptionUnitPrice.modelType - this.unitConfig = newSubscriptionUnitPrice.unitConfig - this.currency = newSubscriptionUnitPrice.currency - this.referenceId = newSubscriptionUnitPrice.referenceId - additionalProperties(newSubscriptionUnitPrice.additionalProperties) + conversionRate = newSubscriptionUnitPrice.conversionRate + modelType = newSubscriptionUnitPrice.modelType + unitConfig = newSubscriptionUnitPrice.unitConfig + currency = newSubscriptionUnitPrice.currency + referenceId = newSubscriptionUnitPrice.referenceId + additionalProperties = + newSubscriptionUnitPrice.additionalProperties.toMutableMap() } /** @@ -4224,75 +3800,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -4300,37 +3833,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -4338,16 +3851,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -4356,87 +3859,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun unitConfig(unitConfig: UnitConfig) = unitConfig(JsonField.of(unitConfig)) - - @JsonProperty("unit_config") - @ExcludeMissing - fun unitConfig(unitConfig: JsonField) = apply { - this.unitConfig = unitConfig - } + fun unitConfig(unitConfig: UnitConfig) = apply { this.unitConfig = unitConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4444,22 +3898,30 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitPrice = NewSubscriptionUnitPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitConfig) { "`unitConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), @@ -4600,33 +4062,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitConfig.Builder::class) @NoAutoDetect class UnitConfig + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Rate per unit of usage */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Rate per unit of usage */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitConfig = apply { - if (!validated) { - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4636,43 +4087,48 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(unitConfig: UnitConfig) = apply { - this.unitAmount = unitConfig.unitAmount - additionalProperties(unitConfig.additionalProperties) + unitAmount = unitConfig.unitAmount + additionalProperties = unitConfig.additionalProperties.toMutableMap() } /** Rate per unit of usage */ - fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - - /** Rate per unit of usage */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { - this.unitAmount = unitAmount - } + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitConfig = - UnitConfig(unitAmount, additionalProperties.toImmutable()) + UnitConfig( + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + additionalProperties.toImmutable() + ) } override fun equals(other: Any?): Boolean { @@ -4697,43 +4153,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4743,57 +4182,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -4879,43 +4317,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4925,8 +4346,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -4934,49 +4355,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -5063,25 +4483,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5096,24 +4509,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -5152,230 +4572,120 @@ constructor( "NewSubscriptionUnitPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitConfig=$unitConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionPackagePrice.Builder::class) @NoAutoDetect class NewSubscriptionPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_config") private val packageConfig: PackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageConfig(): PackageConfig = packageConfig.getRequired("package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("package_config") @ExcludeMissing fun _packageConfig() = packageConfig + @JsonProperty("package_config") fun packageConfig(): PackageConfig = packageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5385,49 +4695,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageConfig: PackageConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionPackagePrice: NewSubscriptionPackagePrice) = apply { - this.metadata = newSubscriptionPackagePrice.metadata - this.externalPriceId = newSubscriptionPackagePrice.externalPriceId - this.name = newSubscriptionPackagePrice.name - this.billableMetricId = newSubscriptionPackagePrice.billableMetricId - this.itemId = newSubscriptionPackagePrice.itemId - this.billedInAdvance = newSubscriptionPackagePrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionPackagePrice.invoiceGroupingKey - this.cadence = newSubscriptionPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionPackagePrice.metadata + externalPriceId = newSubscriptionPackagePrice.externalPriceId + name = newSubscriptionPackagePrice.name + billableMetricId = newSubscriptionPackagePrice.billableMetricId + itemId = newSubscriptionPackagePrice.itemId + billedInAdvance = newSubscriptionPackagePrice.billedInAdvance + fixedPriceQuantity = newSubscriptionPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionPackagePrice.invoiceGroupingKey + cadence = newSubscriptionPackagePrice.cadence + billingCycleConfiguration = newSubscriptionPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionPackagePrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionPackagePrice.conversionRate - this.modelType = newSubscriptionPackagePrice.modelType - this.packageConfig = newSubscriptionPackagePrice.packageConfig - this.currency = newSubscriptionPackagePrice.currency - this.referenceId = newSubscriptionPackagePrice.referenceId - additionalProperties(newSubscriptionPackagePrice.additionalProperties) + conversionRate = newSubscriptionPackagePrice.conversionRate + modelType = newSubscriptionPackagePrice.modelType + packageConfig = newSubscriptionPackagePrice.packageConfig + currency = newSubscriptionPackagePrice.currency + referenceId = newSubscriptionPackagePrice.referenceId + additionalProperties = + newSubscriptionPackagePrice.additionalProperties.toMutableMap() } /** @@ -5435,75 +4743,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -5511,37 +4776,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -5549,16 +4794,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -5567,47 +4802,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - fun packageConfig(packageConfig: PackageConfig) = - packageConfig(JsonField.of(packageConfig)) - - @JsonProperty("package_config") - @ExcludeMissing - fun packageConfig(packageConfig: JsonField) = apply { + fun packageConfig(packageConfig: PackageConfig) = apply { this.packageConfig = packageConfig } @@ -5615,40 +4821,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5656,22 +4843,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionPackagePrice = NewSubscriptionPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageConfig) { + "`packageConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -5812,49 +5009,29 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageConfig.Builder::class) @NoAutoDetect class PackageConfig + @JsonCreator private constructor( - private val packageAmount: JsonField, - private val packageSize: JsonField, - private val additionalProperties: Map, + @JsonProperty("package_amount") private val packageAmount: String, + @JsonProperty("package_size") private val packageSize: Long, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** A currency amount to rate usage by */ - fun packageAmount(): String = packageAmount.getRequired("package_amount") + @JsonProperty("package_amount") fun packageAmount(): String = packageAmount /** * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - fun packageSize(): Long = packageSize.getRequired("package_size") - - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun _packageAmount() = packageAmount - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - @JsonProperty("package_size") @ExcludeMissing fun _packageSize() = packageSize + @JsonProperty("package_size") fun packageSize(): Long = packageSize @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageConfig = apply { - if (!validated) { - packageAmount() - packageSize() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5864,26 +5041,20 @@ constructor( class Builder { - private var packageAmount: JsonField = JsonMissing.of() - private var packageSize: JsonField = JsonMissing.of() + private var packageAmount: String? = null + private var packageSize: Long? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(packageConfig: PackageConfig) = apply { - this.packageAmount = packageConfig.packageAmount - this.packageSize = packageConfig.packageSize - additionalProperties(packageConfig.additionalProperties) + packageAmount = packageConfig.packageAmount + packageSize = packageConfig.packageSize + additionalProperties = packageConfig.additionalProperties.toMutableMap() } /** A currency amount to rate usage by */ - fun packageAmount(packageAmount: String) = - packageAmount(JsonField.of(packageAmount)) - - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun packageAmount(packageAmount: JsonField) = apply { + fun packageAmount(packageAmount: String) = apply { this.packageAmount = packageAmount } @@ -5891,37 +5062,40 @@ constructor( * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - fun packageSize(packageSize: Long) = packageSize(JsonField.of(packageSize)) - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - @JsonProperty("package_size") - @ExcludeMissing - fun packageSize(packageSize: JsonField) = apply { + fun packageSize(packageSize: Long) = apply { this.packageSize = packageSize } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageConfig = PackageConfig( - packageAmount, - packageSize, + checkNotNull(packageAmount) { + "`packageAmount` is required but was not set" + }, + checkNotNull(packageSize) { + "`packageSize` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -5948,43 +5122,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5994,57 +5151,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -6130,43 +5286,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6176,8 +5315,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -6185,49 +5324,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -6314,25 +5452,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6347,24 +5478,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -6403,230 +5541,120 @@ constructor( "NewSubscriptionPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageConfig=$packageConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionMatrixPrice.Builder::class) @NoAutoDetect class NewSubscriptionMatrixPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val matrixConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_config") private val matrixConfig: MatrixConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun matrixConfig(): MatrixConfig = matrixConfig.getRequired("matrix_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("matrix_config") @ExcludeMissing fun _matrixConfig() = matrixConfig + @JsonProperty("matrix_config") fun matrixConfig(): MatrixConfig = matrixConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionMatrixPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - matrixConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6636,49 +5664,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var matrixConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var matrixConfig: MatrixConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionMatrixPrice: NewSubscriptionMatrixPrice) = apply { - this.metadata = newSubscriptionMatrixPrice.metadata - this.externalPriceId = newSubscriptionMatrixPrice.externalPriceId - this.name = newSubscriptionMatrixPrice.name - this.billableMetricId = newSubscriptionMatrixPrice.billableMetricId - this.itemId = newSubscriptionMatrixPrice.itemId - this.billedInAdvance = newSubscriptionMatrixPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionMatrixPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionMatrixPrice.invoiceGroupingKey - this.cadence = newSubscriptionMatrixPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionMatrixPrice.metadata + externalPriceId = newSubscriptionMatrixPrice.externalPriceId + name = newSubscriptionMatrixPrice.name + billableMetricId = newSubscriptionMatrixPrice.billableMetricId + itemId = newSubscriptionMatrixPrice.itemId + billedInAdvance = newSubscriptionMatrixPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionMatrixPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionMatrixPrice.invoiceGroupingKey + cadence = newSubscriptionMatrixPrice.cadence + billingCycleConfiguration = newSubscriptionMatrixPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionMatrixPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionMatrixPrice.conversionRate - this.modelType = newSubscriptionMatrixPrice.modelType - this.matrixConfig = newSubscriptionMatrixPrice.matrixConfig - this.currency = newSubscriptionMatrixPrice.currency - this.referenceId = newSubscriptionMatrixPrice.referenceId - additionalProperties(newSubscriptionMatrixPrice.additionalProperties) + conversionRate = newSubscriptionMatrixPrice.conversionRate + modelType = newSubscriptionMatrixPrice.modelType + matrixConfig = newSubscriptionMatrixPrice.matrixConfig + currency = newSubscriptionMatrixPrice.currency + referenceId = newSubscriptionMatrixPrice.referenceId + additionalProperties = + newSubscriptionMatrixPrice.additionalProperties.toMutableMap() } /** @@ -6686,75 +5712,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -6762,37 +5745,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -6800,16 +5763,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -6818,47 +5771,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun matrixConfig(matrixConfig: MatrixConfig) = - matrixConfig(JsonField.of(matrixConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("matrix_config") - @ExcludeMissing - fun matrixConfig(matrixConfig: JsonField) = apply { + fun matrixConfig(matrixConfig: MatrixConfig) = apply { this.matrixConfig = matrixConfig } @@ -6866,40 +5790,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6907,22 +5812,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionMatrixPrice = NewSubscriptionMatrixPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - matrixConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(matrixConfig) { + "`matrixConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -7011,61 +5926,35 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensions: JsonField>, - private val defaultUnitAmount: JsonField, - private val matrixValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("default_unit_amount") private val defaultUnitAmount: String, + @JsonProperty("matrix_values") private val matrixValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** One or two event property values to evaluate matrix groups by */ - fun dimensions(): List = dimensions.getRequired("dimensions") - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - fun defaultUnitAmount(): String = - defaultUnitAmount.getRequired("default_unit_amount") - - /** Matrix values for specified matrix grouping keys */ - fun matrixValues(): List = - matrixValues.getRequired("matrix_values") - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") @ExcludeMissing fun _dimensions() = dimensions + @JsonProperty("dimensions") fun dimensions(): List = dimensions /** * Default per unit rate for any usage not bucketed into a specified * matrix_value */ @JsonProperty("default_unit_amount") - @ExcludeMissing - fun _defaultUnitAmount() = defaultUnitAmount + fun defaultUnitAmount(): String = defaultUnitAmount /** Matrix values for specified matrix grouping keys */ @JsonProperty("matrix_values") - @ExcludeMissing - fun _matrixValues() = matrixValues + fun matrixValues(): List = matrixValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixConfig = apply { - if (!validated) { - dimensions() - defaultUnitAmount() - matrixValues().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7075,28 +5964,22 @@ constructor( class Builder { - private var dimensions: JsonField> = JsonMissing.of() - private var defaultUnitAmount: JsonField = JsonMissing.of() - private var matrixValues: JsonField> = JsonMissing.of() + private var dimensions: List? = null + private var defaultUnitAmount: String? = null + private var matrixValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensions = matrixConfig.dimensions - this.defaultUnitAmount = matrixConfig.defaultUnitAmount - this.matrixValues = matrixConfig.matrixValues - additionalProperties(matrixConfig.additionalProperties) + dimensions = matrixConfig.dimensions.toMutableList() + defaultUnitAmount = matrixConfig.defaultUnitAmount + matrixValues = matrixConfig.matrixValues.toMutableList() + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ - fun dimensions(dimensions: List) = - dimensions(JsonField.of(dimensions)) - - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") - @ExcludeMissing - fun dimensions(dimensions: JsonField>) = apply { + fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } @@ -7104,78 +5987,68 @@ constructor( * Default per unit rate for any usage not bucketed into a specified * matrix_value */ - fun defaultUnitAmount(defaultUnitAmount: String) = - defaultUnitAmount(JsonField.of(defaultUnitAmount)) - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - @JsonProperty("default_unit_amount") - @ExcludeMissing - fun defaultUnitAmount(defaultUnitAmount: JsonField) = apply { + fun defaultUnitAmount(defaultUnitAmount: String) = apply { this.defaultUnitAmount = defaultUnitAmount } /** Matrix values for specified matrix grouping keys */ - fun matrixValues(matrixValues: List) = - matrixValues(JsonField.of(matrixValues)) - - /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") - @ExcludeMissing - fun matrixValues(matrixValues: JsonField>) = apply { + fun matrixValues(matrixValues: List) = apply { this.matrixValues = matrixValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( - dimensions.map { it.toImmutable() }, - defaultUnitAmount, - matrixValues.map { it.toImmutable() }, + checkNotNull(dimensions) { + "`dimensions` is required but was not set" + } + .toImmutable(), + checkNotNull(defaultUnitAmount) { + "`defaultUnitAmount` is required but was not set" + }, + checkNotNull(matrixValues) { + "`matrixValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonProperty("dimension_values") + private val dimensionValues: List, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Unit price for the specified dimension_values */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - fun dimensionValues(): List = - dimensionValues.getRequired("dimension_values") - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount /** * One or two matrix keys to filter usage to this Matrix value by. For @@ -7183,21 +6056,12 @@ constructor( * cloud region and an instance tier. */ @JsonProperty("dimension_values") - @ExcludeMissing - fun _dimensionValues() = dimensionValues + fun dimensionValues(): List = dimensionValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixValue = apply { - if (!validated) { - unitAmount() - dimensionValues() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7207,26 +6071,21 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() - private var dimensionValues: JsonField> = JsonMissing.of() + private var unitAmount: String? = null + private var dimensionValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues.toMutableList() + additionalProperties = + matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } @@ -7235,39 +6094,41 @@ constructor( * example, ["region", "tier"] could be used to filter cloud usage by a * cloud region and an instance tier. */ - fun dimensionValues(dimensionValues: List) = - dimensionValues(JsonField.of(dimensionValues)) - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - @JsonProperty("dimension_values") - @ExcludeMissing - fun dimensionValues(dimensionValues: JsonField>) = apply { + fun dimensionValues(dimensionValues: List) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( - unitAmount, - dimensionValues.map { it.toImmutable() }, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + checkNotNull(dimensionValues) { + "`dimensionValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } @@ -7364,43 +6225,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7410,57 +6254,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -7546,43 +6389,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7592,8 +6418,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -7601,49 +6427,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -7730,25 +6555,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7763,24 +6581,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -7819,230 +6644,120 @@ constructor( "NewSubscriptionMatrixPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixConfig=$matrixConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_config") private val tieredConfig: TieredConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredConfig(): TieredConfig = tieredConfig.getRequired("tiered_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("tiered_config") @ExcludeMissing fun _tieredConfig() = tieredConfig + @JsonProperty("tiered_config") fun tieredConfig(): TieredConfig = tieredConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8052,49 +6767,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredConfig: TieredConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionTieredPrice: NewSubscriptionTieredPrice) = apply { - this.metadata = newSubscriptionTieredPrice.metadata - this.externalPriceId = newSubscriptionTieredPrice.externalPriceId - this.name = newSubscriptionTieredPrice.name - this.billableMetricId = newSubscriptionTieredPrice.billableMetricId - this.itemId = newSubscriptionTieredPrice.itemId - this.billedInAdvance = newSubscriptionTieredPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionTieredPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionTieredPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredPrice.metadata + externalPriceId = newSubscriptionTieredPrice.externalPriceId + name = newSubscriptionTieredPrice.name + billableMetricId = newSubscriptionTieredPrice.billableMetricId + itemId = newSubscriptionTieredPrice.itemId + billedInAdvance = newSubscriptionTieredPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredPrice.invoiceGroupingKey + cadence = newSubscriptionTieredPrice.cadence + billingCycleConfiguration = newSubscriptionTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredPrice.conversionRate - this.modelType = newSubscriptionTieredPrice.modelType - this.tieredConfig = newSubscriptionTieredPrice.tieredConfig - this.currency = newSubscriptionTieredPrice.currency - this.referenceId = newSubscriptionTieredPrice.referenceId - additionalProperties(newSubscriptionTieredPrice.additionalProperties) + conversionRate = newSubscriptionTieredPrice.conversionRate + modelType = newSubscriptionTieredPrice.modelType + tieredConfig = newSubscriptionTieredPrice.tieredConfig + currency = newSubscriptionTieredPrice.currency + referenceId = newSubscriptionTieredPrice.referenceId + additionalProperties = + newSubscriptionTieredPrice.additionalProperties.toMutableMap() } /** @@ -8102,75 +6815,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -8178,37 +6848,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -8216,16 +6866,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -8234,47 +6874,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredConfig(tieredConfig: TieredConfig) = - tieredConfig(JsonField.of(tieredConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_config") - @ExcludeMissing - fun tieredConfig(tieredConfig: JsonField) = apply { + fun tieredConfig(tieredConfig: TieredConfig) = apply { this.tieredConfig = tieredConfig } @@ -8282,40 +6893,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8323,22 +6915,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredPrice = NewSubscriptionTieredPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredConfig) { + "`tieredConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -8479,33 +7081,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredConfig.Builder::class) @NoAutoDetect class TieredConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(): List = tiers.getRequired("tiers") - /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8515,98 +7106,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredConfig: TieredConfig) = apply { - this.tiers = tieredConfig.tiers - additionalProperties(tieredConfig.additionalProperties) + tiers = tieredConfig.tiers.toMutableList() + additionalProperties = tieredConfig.additionalProperties.toMutableMap() } /** * Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for rating based on total usage quantities into the specified tier - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredConfig = TieredConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") private val firstUnit: Double, + @JsonProperty("last_unit") private val lastUnit: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Inclusive tier starting value */ - fun firstUnit(): Double = firstUnit.getRequired("first_unit") - - /** - * Exclusive tier ending value. If null, this is treated as the last tier - */ - fun lastUnit(): Optional = - Optional.ofNullable(lastUnit.getNullable("last_unit")) - - /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Inclusive tier starting value */ - @JsonProperty("first_unit") @ExcludeMissing fun _firstUnit() = firstUnit + @JsonProperty("first_unit") fun firstUnit(): Double = firstUnit /** * Exclusive tier ending value. If null, this is treated as the last tier */ - @JsonProperty("last_unit") @ExcludeMissing fun _lastUnit() = lastUnit + @JsonProperty("last_unit") + fun lastUnit(): Optional = Optional.ofNullable(lastUnit) /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - firstUnit() - lastUnit() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8616,77 +7188,65 @@ constructor( class Builder { - private var firstUnit: JsonField = JsonMissing.of() - private var lastUnit: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var firstUnit: Double? = null + private var lastUnit: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.firstUnit = tier.firstUnit - this.lastUnit = tier.lastUnit - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + firstUnit = tier.firstUnit + lastUnit = tier.lastUnit + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) - - /** Inclusive tier starting value */ - @JsonProperty("first_unit") - @ExcludeMissing - fun firstUnit(firstUnit: JsonField) = apply { - this.firstUnit = firstUnit - } + fun firstUnit(firstUnit: Double) = apply { this.firstUnit = firstUnit } /** * Exclusive tier ending value. If null, this is treated as the last * tier */ - fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) - - /** - * Exclusive tier ending value. If null, this is treated as the last - * tier - */ - @JsonProperty("last_unit") - @ExcludeMissing - fun lastUnit(lastUnit: JsonField) = apply { - this.lastUnit = lastUnit - } + fun lastUnit(lastUnit: Double) = apply { this.lastUnit = lastUnit } /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - firstUnit, + checkNotNull(firstUnit) { + "`firstUnit` is required but was not set" + }, lastUnit, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -8731,43 +7291,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8777,57 +7320,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -8913,43 +7455,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8959,8 +7484,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -8968,49 +7493,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -9097,25 +7621,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9130,24 +7647,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -9186,233 +7710,121 @@ constructor( "NewSubscriptionTieredPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredConfig=$tieredConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredBpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_bps_config") private val tieredBpsConfig: TieredBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredBpsConfig(): TieredBpsConfig = - tieredBpsConfig.getRequired("tiered_bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun _tieredBpsConfig() = tieredBpsConfig + fun tieredBpsConfig(): TieredBpsConfig = tieredBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredBpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9422,50 +7834,48 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredBpsConfig: TieredBpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredBpsPrice: NewSubscriptionTieredBpsPrice ) = apply { - this.metadata = newSubscriptionTieredBpsPrice.metadata - this.externalPriceId = newSubscriptionTieredBpsPrice.externalPriceId - this.name = newSubscriptionTieredBpsPrice.name - this.billableMetricId = newSubscriptionTieredBpsPrice.billableMetricId - this.itemId = newSubscriptionTieredBpsPrice.itemId - this.billedInAdvance = newSubscriptionTieredBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionTieredBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionTieredBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredBpsPrice.metadata + externalPriceId = newSubscriptionTieredBpsPrice.externalPriceId + name = newSubscriptionTieredBpsPrice.name + billableMetricId = newSubscriptionTieredBpsPrice.billableMetricId + itemId = newSubscriptionTieredBpsPrice.itemId + billedInAdvance = newSubscriptionTieredBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredBpsPrice.invoiceGroupingKey + cadence = newSubscriptionTieredBpsPrice.cadence + billingCycleConfiguration = newSubscriptionTieredBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredBpsPrice.conversionRate - this.modelType = newSubscriptionTieredBpsPrice.modelType - this.tieredBpsConfig = newSubscriptionTieredBpsPrice.tieredBpsConfig - this.currency = newSubscriptionTieredBpsPrice.currency - this.referenceId = newSubscriptionTieredBpsPrice.referenceId - additionalProperties(newSubscriptionTieredBpsPrice.additionalProperties) + conversionRate = newSubscriptionTieredBpsPrice.conversionRate + modelType = newSubscriptionTieredBpsPrice.modelType + tieredBpsConfig = newSubscriptionTieredBpsPrice.tieredBpsConfig + currency = newSubscriptionTieredBpsPrice.currency + referenceId = newSubscriptionTieredBpsPrice.referenceId + additionalProperties = + newSubscriptionTieredBpsPrice.additionalProperties.toMutableMap() } /** @@ -9473,75 +7883,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -9549,37 +7916,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -9587,16 +7934,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -9605,47 +7942,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = - tieredBpsConfig(JsonField.of(tieredBpsConfig)) - - @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun tieredBpsConfig(tieredBpsConfig: JsonField) = apply { + fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = apply { this.tieredBpsConfig = tieredBpsConfig } @@ -9653,40 +7961,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9694,22 +7983,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredBpsPrice = NewSubscriptionTieredBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredBpsConfig) { + "`tieredBpsConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -9850,39 +8149,25 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredBpsConfig.Builder::class) @NoAutoDetect class TieredBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9892,111 +8177,84 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredBpsConfig: TieredBpsConfig) = apply { - this.tiers = tieredBpsConfig.tiers - additionalProperties(tieredBpsConfig.additionalProperties) + tiers = tieredBpsConfig.tiers.toMutableList() + additionalProperties = + tieredBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredBpsConfig = TieredBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Inclusive tier starting value */ - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** Exclusive tier ending value */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Per-event basis point rate */ - fun bps(): Double = bps.getRequired("bps") - - /** Per unit maximum to charge */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** Exclusive tier ending value */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Per-event basis point rate */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Per unit maximum to charge */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - minimumAmount() - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10006,83 +8264,69 @@ constructor( class Builder { - private var minimumAmount: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var minimumAmount: String? = null + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.minimumAmount = tier.minimumAmount - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + minimumAmount = tier.minimumAmount + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** Exclusive tier ending value */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Exclusive tier ending value */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Per-event basis point rate */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Per-event basis point rate */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** Per unit maximum to charge */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** Per unit maximum to charge */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - minimumAmount, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -10128,43 +8372,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10174,57 +8401,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -10310,43 +8536,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10356,8 +8565,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -10365,49 +8574,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -10494,25 +8702,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10527,24 +8728,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -10583,230 +8791,120 @@ constructor( "NewSubscriptionTieredBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredBpsConfig=$tieredBpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bps_config") private val bpsConfig: BpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bpsConfig(): BpsConfig = bpsConfig.getRequired("bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bps_config") @ExcludeMissing fun _bpsConfig() = bpsConfig + @JsonProperty("bps_config") fun bpsConfig(): BpsConfig = bpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10816,48 +8914,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bpsConfig: BpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBpsPrice: NewSubscriptionBpsPrice) = apply { - this.metadata = newSubscriptionBpsPrice.metadata - this.externalPriceId = newSubscriptionBpsPrice.externalPriceId - this.name = newSubscriptionBpsPrice.name - this.billableMetricId = newSubscriptionBpsPrice.billableMetricId - this.itemId = newSubscriptionBpsPrice.itemId - this.billedInAdvance = newSubscriptionBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBpsPrice.metadata + externalPriceId = newSubscriptionBpsPrice.externalPriceId + name = newSubscriptionBpsPrice.name + billableMetricId = newSubscriptionBpsPrice.billableMetricId + itemId = newSubscriptionBpsPrice.itemId + billedInAdvance = newSubscriptionBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBpsPrice.invoiceGroupingKey + cadence = newSubscriptionBpsPrice.cadence + billingCycleConfiguration = newSubscriptionBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBpsPrice.conversionRate - this.modelType = newSubscriptionBpsPrice.modelType - this.bpsConfig = newSubscriptionBpsPrice.bpsConfig - this.currency = newSubscriptionBpsPrice.currency - this.referenceId = newSubscriptionBpsPrice.referenceId - additionalProperties(newSubscriptionBpsPrice.additionalProperties) + conversionRate = newSubscriptionBpsPrice.conversionRate + modelType = newSubscriptionBpsPrice.modelType + bpsConfig = newSubscriptionBpsPrice.bpsConfig + currency = newSubscriptionBpsPrice.currency + referenceId = newSubscriptionBpsPrice.referenceId + additionalProperties = + newSubscriptionBpsPrice.additionalProperties.toMutableMap() } /** @@ -10865,75 +8961,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -10941,37 +8994,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -10979,16 +9012,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -10997,87 +9020,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bpsConfig(bpsConfig: BpsConfig) = bpsConfig(JsonField.of(bpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bps_config") - @ExcludeMissing - fun bpsConfig(bpsConfig: JsonField) = apply { - this.bpsConfig = bpsConfig - } + fun bpsConfig(bpsConfig: BpsConfig) = apply { this.bpsConfig = bpsConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11085,66 +9059,57 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBpsPrice = NewSubscriptionBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bpsConfig) { "`bpsConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BpsConfig.Builder::class) @NoAutoDetect class BpsConfig + @JsonCreator private constructor( - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Basis point take rate per event */ - fun bps(): Double = bps.getRequired("bps") - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Basis point take rate per event */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Optional currency amount maximum to cap spend per event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BpsConfig = apply { - if (!validated) { - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11154,55 +9119,51 @@ constructor( class Builder { - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bpsConfig: BpsConfig) = apply { - this.bps = bpsConfig.bps - this.perUnitMaximum = bpsConfig.perUnitMaximum - additionalProperties(bpsConfig.additionalProperties) + bps = bpsConfig.bps + perUnitMaximum = bpsConfig.perUnitMaximum + additionalProperties = bpsConfig.additionalProperties.toMutableMap() } /** Basis point take rate per event */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis point take rate per event */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) - - /** Optional currency amount maximum to cap spend per event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BpsConfig = BpsConfig( - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -11364,43 +9325,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11410,57 +9354,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -11546,43 +9489,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11592,8 +9518,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -11601,49 +9527,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -11730,25 +9655,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11763,24 +9681,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -11819,232 +9744,120 @@ constructor( "NewSubscriptionBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bpsConfig=$bpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkBpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_bps_config") private val bulkBpsConfig: BulkBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig.getRequired("bulk_bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun _bulkBpsConfig() = bulkBpsConfig + @JsonProperty("bulk_bps_config") fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkBpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12054,49 +9867,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkBpsConfig: BulkBpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBulkBpsPrice: NewSubscriptionBulkBpsPrice) = apply { - this.metadata = newSubscriptionBulkBpsPrice.metadata - this.externalPriceId = newSubscriptionBulkBpsPrice.externalPriceId - this.name = newSubscriptionBulkBpsPrice.name - this.billableMetricId = newSubscriptionBulkBpsPrice.billableMetricId - this.itemId = newSubscriptionBulkBpsPrice.itemId - this.billedInAdvance = newSubscriptionBulkBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBulkBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBulkBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBulkBpsPrice.metadata + externalPriceId = newSubscriptionBulkBpsPrice.externalPriceId + name = newSubscriptionBulkBpsPrice.name + billableMetricId = newSubscriptionBulkBpsPrice.billableMetricId + itemId = newSubscriptionBulkBpsPrice.itemId + billedInAdvance = newSubscriptionBulkBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBulkBpsPrice.invoiceGroupingKey + cadence = newSubscriptionBulkBpsPrice.cadence + billingCycleConfiguration = newSubscriptionBulkBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkBpsPrice.conversionRate - this.modelType = newSubscriptionBulkBpsPrice.modelType - this.bulkBpsConfig = newSubscriptionBulkBpsPrice.bulkBpsConfig - this.currency = newSubscriptionBulkBpsPrice.currency - this.referenceId = newSubscriptionBulkBpsPrice.referenceId - additionalProperties(newSubscriptionBulkBpsPrice.additionalProperties) + conversionRate = newSubscriptionBulkBpsPrice.conversionRate + modelType = newSubscriptionBulkBpsPrice.modelType + bulkBpsConfig = newSubscriptionBulkBpsPrice.bulkBpsConfig + currency = newSubscriptionBulkBpsPrice.currency + referenceId = newSubscriptionBulkBpsPrice.referenceId + additionalProperties = + newSubscriptionBulkBpsPrice.additionalProperties.toMutableMap() } /** @@ -12104,75 +9915,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -12180,37 +9948,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -12218,16 +9966,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -12236,47 +9974,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = - bulkBpsConfig(JsonField.of(bulkBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun bulkBpsConfig(bulkBpsConfig: JsonField) = apply { + fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = apply { this.bulkBpsConfig = bulkBpsConfig } @@ -12284,40 +9993,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12325,61 +10015,57 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkBpsPrice = NewSubscriptionBulkBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkBpsConfig) { + "`bulkBpsConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkBpsConfig.Builder::class) @NoAutoDetect class BulkBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a single - * tier based on total volume - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single * tier based on total volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12389,101 +10075,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkBpsConfig: BulkBpsConfig) = apply { - this.tiers = bulkBpsConfig.tiers - additionalProperties(bulkBpsConfig.additionalProperties) + tiers = bulkBpsConfig.tiers.toMutableList() + additionalProperties = bulkBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a * single tier based on total volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a - * single tier based on total volume - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkBpsConfig = BulkBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for tier */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Basis points to rate on */ - fun bps(): Double = bps.getRequired("bps") - - /** The maximum amount to charge for any one event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Upper bound for tier */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Basis points to rate on */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** The maximum amount to charge for any one event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12493,69 +10157,59 @@ constructor( class Builder { - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for tier */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Upper bound for tier */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Basis points to rate on */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis points to rate on */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** The maximum amount to charge for any one event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** The maximum amount to charge for any one event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -12735,43 +10389,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12781,57 +10418,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -12917,43 +10553,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12963,8 +10582,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -12972,49 +10591,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -13101,25 +10719,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13134,24 +10745,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -13190,230 +10808,120 @@ constructor( "NewSubscriptionBulkBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkBpsConfig=$bulkBpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_config") private val bulkConfig: BulkConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkConfig(): BulkConfig = bulkConfig.getRequired("bulk_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_config") @ExcludeMissing fun _bulkConfig() = bulkConfig + @JsonProperty("bulk_config") fun bulkConfig(): BulkConfig = bulkConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13423,48 +10931,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkConfig: BulkConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBulkPrice: NewSubscriptionBulkPrice) = apply { - this.metadata = newSubscriptionBulkPrice.metadata - this.externalPriceId = newSubscriptionBulkPrice.externalPriceId - this.name = newSubscriptionBulkPrice.name - this.billableMetricId = newSubscriptionBulkPrice.billableMetricId - this.itemId = newSubscriptionBulkPrice.itemId - this.billedInAdvance = newSubscriptionBulkPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBulkPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBulkPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBulkPrice.metadata + externalPriceId = newSubscriptionBulkPrice.externalPriceId + name = newSubscriptionBulkPrice.name + billableMetricId = newSubscriptionBulkPrice.billableMetricId + itemId = newSubscriptionBulkPrice.itemId + billedInAdvance = newSubscriptionBulkPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBulkPrice.invoiceGroupingKey + cadence = newSubscriptionBulkPrice.cadence + billingCycleConfiguration = newSubscriptionBulkPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkPrice.conversionRate - this.modelType = newSubscriptionBulkPrice.modelType - this.bulkConfig = newSubscriptionBulkPrice.bulkConfig - this.currency = newSubscriptionBulkPrice.currency - this.referenceId = newSubscriptionBulkPrice.referenceId - additionalProperties(newSubscriptionBulkPrice.additionalProperties) + conversionRate = newSubscriptionBulkPrice.conversionRate + modelType = newSubscriptionBulkPrice.modelType + bulkConfig = newSubscriptionBulkPrice.bulkConfig + currency = newSubscriptionBulkPrice.currency + referenceId = newSubscriptionBulkPrice.referenceId + additionalProperties = + newSubscriptionBulkPrice.additionalProperties.toMutableMap() } /** @@ -13472,75 +10978,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -13548,37 +11011,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -13586,16 +11029,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -13604,87 +11037,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkConfig(bulkConfig: BulkConfig) = bulkConfig(JsonField.of(bulkConfig)) - - @JsonProperty("bulk_config") - @ExcludeMissing - fun bulkConfig(bulkConfig: JsonField) = apply { - this.bulkConfig = bulkConfig - } + fun bulkConfig(bulkConfig: BulkConfig) = apply { this.bulkConfig = bulkConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13692,55 +11076,52 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkPrice = NewSubscriptionBulkPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkConfig) { "`bulkConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkConfig.Builder::class) @NoAutoDetect class BulkConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Bulk tiers for rating based on total usage volume */ - fun tiers(): List = tiers.getRequired("tiers") - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13750,84 +11131,71 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkConfig: BulkConfig) = apply { - this.tiers = bulkConfig.tiers - additionalProperties(bulkConfig.additionalProperties) + tiers = bulkConfig.tiers.toMutableList() + additionalProperties = bulkConfig.additionalProperties.toMutableMap() } /** Bulk tiers for rating based on total usage volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkConfig = BulkConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumUnits: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_units") private val maximumUnits: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for this tier */ - fun maximumUnits(): Optional = - Optional.ofNullable(maximumUnits.getNullable("maximum_units")) - - /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Upper bound for this tier */ @JsonProperty("maximum_units") - @ExcludeMissing - fun _maximumUnits() = maximumUnits + fun maximumUnits(): Optional = Optional.ofNullable(maximumUnits) /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumUnits() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13837,59 +11205,56 @@ constructor( class Builder { - private var maximumUnits: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var maximumUnits: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumUnits = tier.maximumUnits - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + maximumUnits = tier.maximumUnits + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for this tier */ - fun maximumUnits(maximumUnits: Double) = - maximumUnits(JsonField.of(maximumUnits)) - - /** Upper bound for this tier */ - @JsonProperty("maximum_units") - @ExcludeMissing - fun maximumUnits(maximumUnits: JsonField) = apply { + fun maximumUnits(maximumUnits: Double) = apply { this.maximumUnits = maximumUnits } /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumUnits, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14068,43 +11433,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14114,57 +11462,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14250,43 +11597,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14296,8 +11626,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -14305,49 +11635,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14434,25 +11763,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14467,24 +11789,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -14523,233 +11852,123 @@ constructor( "NewSubscriptionBulkPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkConfig=$bulkConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionThresholdTotalAmountPrice.Builder::class) @NoAutoDetect class NewSubscriptionThresholdTotalAmountPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val thresholdTotalAmountConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("threshold_total_amount_config") + private val thresholdTotalAmountConfig: ThresholdTotalAmountConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = - thresholdTotalAmountConfig.getRequired("threshold_total_amount_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun _thresholdTotalAmountConfig() = thresholdTotalAmountConfig + fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = + thresholdTotalAmountConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionThresholdTotalAmountPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - thresholdTotalAmountConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14759,26 +11978,22 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var thresholdTotalAmountConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var thresholdTotalAmountConfig: ThresholdTotalAmountConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -14786,34 +12001,30 @@ constructor( newSubscriptionThresholdTotalAmountPrice: NewSubscriptionThresholdTotalAmountPrice ) = apply { - this.metadata = newSubscriptionThresholdTotalAmountPrice.metadata - this.externalPriceId = - newSubscriptionThresholdTotalAmountPrice.externalPriceId - this.name = newSubscriptionThresholdTotalAmountPrice.name - this.billableMetricId = - newSubscriptionThresholdTotalAmountPrice.billableMetricId - this.itemId = newSubscriptionThresholdTotalAmountPrice.itemId - this.billedInAdvance = - newSubscriptionThresholdTotalAmountPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionThresholdTotalAmountPrice.metadata + externalPriceId = newSubscriptionThresholdTotalAmountPrice.externalPriceId + name = newSubscriptionThresholdTotalAmountPrice.name + billableMetricId = newSubscriptionThresholdTotalAmountPrice.billableMetricId + itemId = newSubscriptionThresholdTotalAmountPrice.itemId + billedInAdvance = newSubscriptionThresholdTotalAmountPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionThresholdTotalAmountPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionThresholdTotalAmountPrice.invoiceGroupingKey - this.cadence = newSubscriptionThresholdTotalAmountPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionThresholdTotalAmountPrice.cadence + billingCycleConfiguration = newSubscriptionThresholdTotalAmountPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionThresholdTotalAmountPrice.invoicingCycleConfiguration - this.conversionRate = - newSubscriptionThresholdTotalAmountPrice.conversionRate - this.modelType = newSubscriptionThresholdTotalAmountPrice.modelType - this.thresholdTotalAmountConfig = + conversionRate = newSubscriptionThresholdTotalAmountPrice.conversionRate + modelType = newSubscriptionThresholdTotalAmountPrice.modelType + thresholdTotalAmountConfig = newSubscriptionThresholdTotalAmountPrice.thresholdTotalAmountConfig - this.currency = newSubscriptionThresholdTotalAmountPrice.currency - this.referenceId = newSubscriptionThresholdTotalAmountPrice.referenceId - additionalProperties( + currency = newSubscriptionThresholdTotalAmountPrice.currency + referenceId = newSubscriptionThresholdTotalAmountPrice.referenceId + additionalProperties = newSubscriptionThresholdTotalAmountPrice.additionalProperties - ) + .toMutableMap() } /** @@ -14821,75 +12032,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -14897,37 +12065,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -14935,16 +12083,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -14953,89 +12091,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun thresholdTotalAmountConfig( thresholdTotalAmountConfig: ThresholdTotalAmountConfig - ) = thresholdTotalAmountConfig(JsonField.of(thresholdTotalAmountConfig)) - - @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun thresholdTotalAmountConfig( - thresholdTotalAmountConfig: JsonField ) = apply { this.thresholdTotalAmountConfig = thresholdTotalAmountConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15043,22 +12132,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionThresholdTotalAmountPrice = NewSubscriptionThresholdTotalAmountPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - thresholdTotalAmountConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(thresholdTotalAmountConfig) { + "`thresholdTotalAmountConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -15199,25 +12298,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ThresholdTotalAmountConfig.Builder::class) @NoAutoDetect class ThresholdTotalAmountConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): ThresholdTotalAmountConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15233,26 +12325,32 @@ constructor( @JvmSynthetic internal fun from(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = apply { - additionalProperties( - thresholdTotalAmountConfig.additionalProperties - ) + additionalProperties = + thresholdTotalAmountConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ThresholdTotalAmountConfig = ThresholdTotalAmountConfig(additionalProperties.toImmutable()) } @@ -15279,43 +12377,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15325,57 +12406,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -15461,43 +12541,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15507,8 +12570,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -15516,49 +12579,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -15645,25 +12707,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15678,24 +12733,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -15734,233 +12796,122 @@ constructor( "NewSubscriptionThresholdTotalAmountPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, thresholdTotalAmountConfig=$thresholdTotalAmountConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredPackagePrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredPackageConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_package_config") + private val tieredPackageConfig: TieredPackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredPackageConfig(): TieredPackageConfig = - tieredPackageConfig.getRequired("tiered_package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_package_config") - @ExcludeMissing - fun _tieredPackageConfig() = tieredPackageConfig + fun tieredPackageConfig(): TieredPackageConfig = tieredPackageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredPackageConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15970,54 +12921,48 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredPackageConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredPackageConfig: TieredPackageConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredPackagePrice: NewSubscriptionTieredPackagePrice ) = apply { - this.metadata = newSubscriptionTieredPackagePrice.metadata - this.externalPriceId = newSubscriptionTieredPackagePrice.externalPriceId - this.name = newSubscriptionTieredPackagePrice.name - this.billableMetricId = newSubscriptionTieredPackagePrice.billableMetricId - this.itemId = newSubscriptionTieredPackagePrice.itemId - this.billedInAdvance = newSubscriptionTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = - newSubscriptionTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = - newSubscriptionTieredPackagePrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredPackagePrice.metadata + externalPriceId = newSubscriptionTieredPackagePrice.externalPriceId + name = newSubscriptionTieredPackagePrice.name + billableMetricId = newSubscriptionTieredPackagePrice.billableMetricId + itemId = newSubscriptionTieredPackagePrice.itemId + billedInAdvance = newSubscriptionTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredPackagePrice.invoiceGroupingKey + cadence = newSubscriptionTieredPackagePrice.cadence + billingCycleConfiguration = newSubscriptionTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredPackagePrice.conversionRate - this.modelType = newSubscriptionTieredPackagePrice.modelType - this.tieredPackageConfig = - newSubscriptionTieredPackagePrice.tieredPackageConfig - this.currency = newSubscriptionTieredPackagePrice.currency - this.referenceId = newSubscriptionTieredPackagePrice.referenceId - additionalProperties(newSubscriptionTieredPackagePrice.additionalProperties) + conversionRate = newSubscriptionTieredPackagePrice.conversionRate + modelType = newSubscriptionTieredPackagePrice.modelType + tieredPackageConfig = newSubscriptionTieredPackagePrice.tieredPackageConfig + currency = newSubscriptionTieredPackagePrice.currency + referenceId = newSubscriptionTieredPackagePrice.referenceId + additionalProperties = + newSubscriptionTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -16025,75 +12970,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -16101,37 +13003,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -16139,16 +13021,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -16157,89 +13029,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType + fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = apply { + this.tieredPackageConfig = tieredPackageConfig } - fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = - tieredPackageConfig(JsonField.of(tieredPackageConfig)) - - @JsonProperty("tiered_package_config") - @ExcludeMissing - fun tieredPackageConfig(tieredPackageConfig: JsonField) = - apply { - this.tieredPackageConfig = tieredPackageConfig - } - /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16247,22 +13070,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredPackagePrice = NewSubscriptionTieredPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredPackageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredPackageConfig) { + "`tieredPackageConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -16403,25 +13236,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageConfig.Builder::class) @NoAutoDetect class TieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredPackageConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16436,24 +13262,32 @@ constructor( @JvmSynthetic internal fun from(tieredPackageConfig: TieredPackageConfig) = apply { - additionalProperties(tieredPackageConfig.additionalProperties) + additionalProperties = + tieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageConfig = TieredPackageConfig(additionalProperties.toImmutable()) } @@ -16480,43 +13314,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16526,57 +13343,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -16662,43 +13478,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16708,8 +13507,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -16717,49 +13516,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -16846,25 +13644,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16879,24 +13670,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -16935,233 +13733,122 @@ constructor( "NewSubscriptionTieredPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredPackageConfig=$tieredPackageConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredWithMinimumPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredWithMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithMinimumConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_minimum_config") + private val tieredWithMinimumConfig: TieredWithMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithMinimumConfig(): TieredWithMinimumConfig = - tieredWithMinimumConfig.getRequired("tiered_with_minimum_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun _tieredWithMinimumConfig() = tieredWithMinimumConfig + fun tieredWithMinimumConfig(): TieredWithMinimumConfig = tieredWithMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredWithMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithMinimumConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17171,57 +13858,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithMinimumConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithMinimumConfig: TieredWithMinimumConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredWithMinimumPrice: NewSubscriptionTieredWithMinimumPrice ) = apply { - this.metadata = newSubscriptionTieredWithMinimumPrice.metadata - this.externalPriceId = newSubscriptionTieredWithMinimumPrice.externalPriceId - this.name = newSubscriptionTieredWithMinimumPrice.name - this.billableMetricId = - newSubscriptionTieredWithMinimumPrice.billableMetricId - this.itemId = newSubscriptionTieredWithMinimumPrice.itemId - this.billedInAdvance = newSubscriptionTieredWithMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionTieredWithMinimumPrice.metadata + externalPriceId = newSubscriptionTieredWithMinimumPrice.externalPriceId + name = newSubscriptionTieredWithMinimumPrice.name + billableMetricId = newSubscriptionTieredWithMinimumPrice.billableMetricId + itemId = newSubscriptionTieredWithMinimumPrice.itemId + billedInAdvance = newSubscriptionTieredWithMinimumPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredWithMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionTieredWithMinimumPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredWithMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionTieredWithMinimumPrice.cadence + billingCycleConfiguration = newSubscriptionTieredWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredWithMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredWithMinimumPrice.conversionRate - this.modelType = newSubscriptionTieredWithMinimumPrice.modelType - this.tieredWithMinimumConfig = + conversionRate = newSubscriptionTieredWithMinimumPrice.conversionRate + modelType = newSubscriptionTieredWithMinimumPrice.modelType + tieredWithMinimumConfig = newSubscriptionTieredWithMinimumPrice.tieredWithMinimumConfig - this.currency = newSubscriptionTieredWithMinimumPrice.currency - this.referenceId = newSubscriptionTieredWithMinimumPrice.referenceId - additionalProperties( + currency = newSubscriptionTieredWithMinimumPrice.currency + referenceId = newSubscriptionTieredWithMinimumPrice.referenceId + additionalProperties = newSubscriptionTieredWithMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -17229,75 +13911,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -17305,37 +13944,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -17343,16 +13962,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -17361,88 +13970,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithMinimumConfig(tieredWithMinimumConfig: TieredWithMinimumConfig) = - tieredWithMinimumConfig(JsonField.of(tieredWithMinimumConfig)) - - @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun tieredWithMinimumConfig( - tieredWithMinimumConfig: JsonField - ) = apply { this.tieredWithMinimumConfig = tieredWithMinimumConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.tieredWithMinimumConfig = tieredWithMinimumConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17450,22 +14012,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredWithMinimumPrice = NewSubscriptionTieredWithMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithMinimumConfig) { + "`tieredWithMinimumConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -17606,25 +14178,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithMinimumConfig.Builder::class) @NoAutoDetect class TieredWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17640,24 +14205,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithMinimumConfig: TieredWithMinimumConfig) = apply { - additionalProperties(tieredWithMinimumConfig.additionalProperties) + additionalProperties = + tieredWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithMinimumConfig = TieredWithMinimumConfig(additionalProperties.toImmutable()) } @@ -17684,43 +14257,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17730,57 +14286,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -17866,43 +14421,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17912,8 +14450,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -17921,49 +14459,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -18050,25 +14587,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18083,24 +14613,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -18139,233 +14676,122 @@ constructor( "NewSubscriptionTieredWithMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithMinimumConfig=$tieredWithMinimumConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionUnitWithPercentPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitWithPercentPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithPercentConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_percent_config") + private val unitWithPercentConfig: UnitWithPercentConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithPercentConfig(): UnitWithPercentConfig = - unitWithPercentConfig.getRequired("unit_with_percent_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun _unitWithPercentConfig() = unitWithPercentConfig + fun unitWithPercentConfig(): UnitWithPercentConfig = unitWithPercentConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitWithPercentPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithPercentConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18375,56 +14801,49 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithPercentConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithPercentConfig: UnitWithPercentConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionUnitWithPercentPrice: NewSubscriptionUnitWithPercentPrice ) = apply { - this.metadata = newSubscriptionUnitWithPercentPrice.metadata - this.externalPriceId = newSubscriptionUnitWithPercentPrice.externalPriceId - this.name = newSubscriptionUnitWithPercentPrice.name - this.billableMetricId = newSubscriptionUnitWithPercentPrice.billableMetricId - this.itemId = newSubscriptionUnitWithPercentPrice.itemId - this.billedInAdvance = newSubscriptionUnitWithPercentPrice.billedInAdvance - this.fixedPriceQuantity = - newSubscriptionUnitWithPercentPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newSubscriptionUnitWithPercentPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitWithPercentPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionUnitWithPercentPrice.metadata + externalPriceId = newSubscriptionUnitWithPercentPrice.externalPriceId + name = newSubscriptionUnitWithPercentPrice.name + billableMetricId = newSubscriptionUnitWithPercentPrice.billableMetricId + itemId = newSubscriptionUnitWithPercentPrice.itemId + billedInAdvance = newSubscriptionUnitWithPercentPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitWithPercentPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionUnitWithPercentPrice.invoiceGroupingKey + cadence = newSubscriptionUnitWithPercentPrice.cadence + billingCycleConfiguration = newSubscriptionUnitWithPercentPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitWithPercentPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitWithPercentPrice.conversionRate - this.modelType = newSubscriptionUnitWithPercentPrice.modelType - this.unitWithPercentConfig = + conversionRate = newSubscriptionUnitWithPercentPrice.conversionRate + modelType = newSubscriptionUnitWithPercentPrice.modelType + unitWithPercentConfig = newSubscriptionUnitWithPercentPrice.unitWithPercentConfig - this.currency = newSubscriptionUnitWithPercentPrice.currency - this.referenceId = newSubscriptionUnitWithPercentPrice.referenceId - additionalProperties( - newSubscriptionUnitWithPercentPrice.additionalProperties - ) + currency = newSubscriptionUnitWithPercentPrice.currency + referenceId = newSubscriptionUnitWithPercentPrice.referenceId + additionalProperties = + newSubscriptionUnitWithPercentPrice.additionalProperties.toMutableMap() } /** @@ -18432,75 +14851,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -18508,37 +14884,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -18546,16 +14902,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -18564,88 +14910,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithPercentConfig(unitWithPercentConfig: UnitWithPercentConfig) = - unitWithPercentConfig(JsonField.of(unitWithPercentConfig)) - - @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun unitWithPercentConfig( - unitWithPercentConfig: JsonField - ) = apply { this.unitWithPercentConfig = unitWithPercentConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithPercentConfig = unitWithPercentConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18653,22 +14952,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitWithPercentPrice = NewSubscriptionUnitWithPercentPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithPercentConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithPercentConfig) { + "`unitWithPercentConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -18809,25 +15118,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithPercentConfig.Builder::class) @NoAutoDetect class UnitWithPercentConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithPercentConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18842,24 +15144,32 @@ constructor( @JvmSynthetic internal fun from(unitWithPercentConfig: UnitWithPercentConfig) = apply { - additionalProperties(unitWithPercentConfig.additionalProperties) + additionalProperties = + unitWithPercentConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithPercentConfig = UnitWithPercentConfig(additionalProperties.toImmutable()) } @@ -18886,43 +15196,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18932,57 +15225,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -19068,43 +15360,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19114,8 +15389,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -19123,49 +15398,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -19252,25 +15526,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19285,24 +15552,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -19341,233 +15615,123 @@ constructor( "NewSubscriptionUnitWithPercentPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithPercentConfig=$unitWithPercentConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionPackageWithAllocationPrice.Builder::class) @NoAutoDetect class NewSubscriptionPackageWithAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageWithAllocationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_with_allocation_config") + private val packageWithAllocationConfig: PackageWithAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageWithAllocationConfig(): PackageWithAllocationConfig = - packageWithAllocationConfig.getRequired("package_with_allocation_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun _packageWithAllocationConfig() = packageWithAllocationConfig + fun packageWithAllocationConfig(): PackageWithAllocationConfig = + packageWithAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionPackageWithAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageWithAllocationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19577,27 +15741,22 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageWithAllocationConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageWithAllocationConfig: PackageWithAllocationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -19605,34 +15764,31 @@ constructor( newSubscriptionPackageWithAllocationPrice: NewSubscriptionPackageWithAllocationPrice ) = apply { - this.metadata = newSubscriptionPackageWithAllocationPrice.metadata - this.externalPriceId = - newSubscriptionPackageWithAllocationPrice.externalPriceId - this.name = newSubscriptionPackageWithAllocationPrice.name - this.billableMetricId = + metadata = newSubscriptionPackageWithAllocationPrice.metadata + externalPriceId = newSubscriptionPackageWithAllocationPrice.externalPriceId + name = newSubscriptionPackageWithAllocationPrice.name + billableMetricId = newSubscriptionPackageWithAllocationPrice.billableMetricId - this.itemId = newSubscriptionPackageWithAllocationPrice.itemId - this.billedInAdvance = - newSubscriptionPackageWithAllocationPrice.billedInAdvance - this.fixedPriceQuantity = + itemId = newSubscriptionPackageWithAllocationPrice.itemId + billedInAdvance = newSubscriptionPackageWithAllocationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionPackageWithAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionPackageWithAllocationPrice.invoiceGroupingKey - this.cadence = newSubscriptionPackageWithAllocationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionPackageWithAllocationPrice.cadence + billingCycleConfiguration = newSubscriptionPackageWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionPackageWithAllocationPrice.invoicingCycleConfiguration - this.conversionRate = - newSubscriptionPackageWithAllocationPrice.conversionRate - this.modelType = newSubscriptionPackageWithAllocationPrice.modelType - this.packageWithAllocationConfig = + conversionRate = newSubscriptionPackageWithAllocationPrice.conversionRate + modelType = newSubscriptionPackageWithAllocationPrice.modelType + packageWithAllocationConfig = newSubscriptionPackageWithAllocationPrice.packageWithAllocationConfig - this.currency = newSubscriptionPackageWithAllocationPrice.currency - this.referenceId = newSubscriptionPackageWithAllocationPrice.referenceId - additionalProperties( + currency = newSubscriptionPackageWithAllocationPrice.currency + referenceId = newSubscriptionPackageWithAllocationPrice.referenceId + additionalProperties = newSubscriptionPackageWithAllocationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -19640,75 +15796,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -19716,37 +15829,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -19754,16 +15847,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -19772,89 +15855,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun packageWithAllocationConfig( packageWithAllocationConfig: PackageWithAllocationConfig - ) = packageWithAllocationConfig(JsonField.of(packageWithAllocationConfig)) - - @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun packageWithAllocationConfig( - packageWithAllocationConfig: JsonField ) = apply { this.packageWithAllocationConfig = packageWithAllocationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19862,22 +15896,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionPackageWithAllocationPrice = NewSubscriptionPackageWithAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageWithAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageWithAllocationConfig) { + "`packageWithAllocationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -20018,25 +16062,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageWithAllocationConfig.Builder::class) @NoAutoDetect class PackageWithAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageWithAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20053,24 +16090,32 @@ constructor( internal fun from( packageWithAllocationConfig: PackageWithAllocationConfig ) = apply { - additionalProperties(packageWithAllocationConfig.additionalProperties) + additionalProperties = + packageWithAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageWithAllocationConfig = PackageWithAllocationConfig(additionalProperties.toImmutable()) } @@ -20097,43 +16142,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20143,57 +16171,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -20279,43 +16306,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20325,8 +16335,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -20334,49 +16344,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -20463,25 +16472,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20496,24 +16498,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -20552,233 +16561,123 @@ constructor( "NewSubscriptionPackageWithAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageWithAllocationConfig=$packageWithAllocationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTierWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionTierWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_proration_config") + private val tieredWithProrationConfig: TieredWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithProrationConfig(): TieredWithProrationConfig = - tieredWithProrationConfig.getRequired("tiered_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun _tieredWithProrationConfig() = tieredWithProrationConfig + fun tieredWithProrationConfig(): TieredWithProrationConfig = + tieredWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTierWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20788,57 +16687,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithProrationConfig: TieredWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTierWithProrationPrice: NewSubscriptionTierWithProrationPrice ) = apply { - this.metadata = newSubscriptionTierWithProrationPrice.metadata - this.externalPriceId = newSubscriptionTierWithProrationPrice.externalPriceId - this.name = newSubscriptionTierWithProrationPrice.name - this.billableMetricId = - newSubscriptionTierWithProrationPrice.billableMetricId - this.itemId = newSubscriptionTierWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionTierWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionTierWithProrationPrice.metadata + externalPriceId = newSubscriptionTierWithProrationPrice.externalPriceId + name = newSubscriptionTierWithProrationPrice.name + billableMetricId = newSubscriptionTierWithProrationPrice.billableMetricId + itemId = newSubscriptionTierWithProrationPrice.itemId + billedInAdvance = newSubscriptionTierWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTierWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionTierWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionTierWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionTierWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionTierWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTierWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTierWithProrationPrice.conversionRate - this.modelType = newSubscriptionTierWithProrationPrice.modelType - this.tieredWithProrationConfig = + conversionRate = newSubscriptionTierWithProrationPrice.conversionRate + modelType = newSubscriptionTierWithProrationPrice.modelType + tieredWithProrationConfig = newSubscriptionTierWithProrationPrice.tieredWithProrationConfig - this.currency = newSubscriptionTierWithProrationPrice.currency - this.referenceId = newSubscriptionTierWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionTierWithProrationPrice.currency + referenceId = newSubscriptionTierWithProrationPrice.referenceId + additionalProperties = newSubscriptionTierWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -20846,75 +16740,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -20922,37 +16773,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -20960,16 +16791,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -20978,89 +16799,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithProrationConfig( tieredWithProrationConfig: TieredWithProrationConfig - ) = tieredWithProrationConfig(JsonField.of(tieredWithProrationConfig)) - - @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun tieredWithProrationConfig( - tieredWithProrationConfig: JsonField ) = apply { this.tieredWithProrationConfig = tieredWithProrationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21068,22 +16840,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTierWithProrationPrice = NewSubscriptionTierWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithProrationConfig) { + "`tieredWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -21224,25 +17006,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithProrationConfig.Builder::class) @NoAutoDetect class TieredWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21258,24 +17033,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithProrationConfig: TieredWithProrationConfig) = apply { - additionalProperties(tieredWithProrationConfig.additionalProperties) + additionalProperties = + tieredWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithProrationConfig = TieredWithProrationConfig(additionalProperties.toImmutable()) } @@ -21302,43 +17085,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21348,57 +17114,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -21484,43 +17249,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21530,8 +17278,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -21539,49 +17287,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -21668,25 +17415,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21701,24 +17441,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -21757,233 +17504,122 @@ constructor( "NewSubscriptionTierWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithProrationConfig=$tieredWithProrationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionUnitWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_proration_config") + private val unitWithProrationConfig: UnitWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithProrationConfig(): UnitWithProrationConfig = - unitWithProrationConfig.getRequired("unit_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun _unitWithProrationConfig() = unitWithProrationConfig + fun unitWithProrationConfig(): UnitWithProrationConfig = unitWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21993,57 +17629,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithProrationConfig: UnitWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionUnitWithProrationPrice: NewSubscriptionUnitWithProrationPrice ) = apply { - this.metadata = newSubscriptionUnitWithProrationPrice.metadata - this.externalPriceId = newSubscriptionUnitWithProrationPrice.externalPriceId - this.name = newSubscriptionUnitWithProrationPrice.name - this.billableMetricId = - newSubscriptionUnitWithProrationPrice.billableMetricId - this.itemId = newSubscriptionUnitWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionUnitWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionUnitWithProrationPrice.metadata + externalPriceId = newSubscriptionUnitWithProrationPrice.externalPriceId + name = newSubscriptionUnitWithProrationPrice.name + billableMetricId = newSubscriptionUnitWithProrationPrice.billableMetricId + itemId = newSubscriptionUnitWithProrationPrice.itemId + billedInAdvance = newSubscriptionUnitWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionUnitWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionUnitWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionUnitWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitWithProrationPrice.conversionRate - this.modelType = newSubscriptionUnitWithProrationPrice.modelType - this.unitWithProrationConfig = + conversionRate = newSubscriptionUnitWithProrationPrice.conversionRate + modelType = newSubscriptionUnitWithProrationPrice.modelType + unitWithProrationConfig = newSubscriptionUnitWithProrationPrice.unitWithProrationConfig - this.currency = newSubscriptionUnitWithProrationPrice.currency - this.referenceId = newSubscriptionUnitWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionUnitWithProrationPrice.currency + referenceId = newSubscriptionUnitWithProrationPrice.referenceId + additionalProperties = newSubscriptionUnitWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -22051,75 +17682,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -22127,37 +17715,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -22165,16 +17733,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -22183,88 +17741,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithProrationConfig(unitWithProrationConfig: UnitWithProrationConfig) = - unitWithProrationConfig(JsonField.of(unitWithProrationConfig)) - - @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun unitWithProrationConfig( - unitWithProrationConfig: JsonField - ) = apply { this.unitWithProrationConfig = unitWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithProrationConfig = unitWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22272,22 +17783,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitWithProrationPrice = NewSubscriptionUnitWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithProrationConfig) { + "`unitWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -22428,25 +17949,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithProrationConfig.Builder::class) @NoAutoDetect class UnitWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22462,24 +17976,32 @@ constructor( @JvmSynthetic internal fun from(unitWithProrationConfig: UnitWithProrationConfig) = apply { - additionalProperties(unitWithProrationConfig.additionalProperties) + additionalProperties = + unitWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithProrationConfig = UnitWithProrationConfig(additionalProperties.toImmutable()) } @@ -22506,43 +18028,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22552,57 +18057,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -22688,43 +18192,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22734,8 +18221,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -22743,49 +18230,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -22872,25 +18358,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22905,24 +18384,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -22961,233 +18447,122 @@ constructor( "NewSubscriptionUnitWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithProrationConfig=$unitWithProrationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionGroupedAllocationPrice.Builder::class) @NoAutoDetect class NewSubscriptionGroupedAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedAllocationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_allocation_config") + private val groupedAllocationConfig: GroupedAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedAllocationConfig(): GroupedAllocationConfig = - groupedAllocationConfig.getRequired("grouped_allocation_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun _groupedAllocationConfig() = groupedAllocationConfig + fun groupedAllocationConfig(): GroupedAllocationConfig = groupedAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionGroupedAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedAllocationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23197,57 +18572,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedAllocationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedAllocationConfig: GroupedAllocationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionGroupedAllocationPrice: NewSubscriptionGroupedAllocationPrice ) = apply { - this.metadata = newSubscriptionGroupedAllocationPrice.metadata - this.externalPriceId = newSubscriptionGroupedAllocationPrice.externalPriceId - this.name = newSubscriptionGroupedAllocationPrice.name - this.billableMetricId = - newSubscriptionGroupedAllocationPrice.billableMetricId - this.itemId = newSubscriptionGroupedAllocationPrice.itemId - this.billedInAdvance = newSubscriptionGroupedAllocationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionGroupedAllocationPrice.metadata + externalPriceId = newSubscriptionGroupedAllocationPrice.externalPriceId + name = newSubscriptionGroupedAllocationPrice.name + billableMetricId = newSubscriptionGroupedAllocationPrice.billableMetricId + itemId = newSubscriptionGroupedAllocationPrice.itemId + billedInAdvance = newSubscriptionGroupedAllocationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionGroupedAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionGroupedAllocationPrice.invoiceGroupingKey - this.cadence = newSubscriptionGroupedAllocationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionGroupedAllocationPrice.cadence + billingCycleConfiguration = newSubscriptionGroupedAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionGroupedAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionGroupedAllocationPrice.conversionRate - this.modelType = newSubscriptionGroupedAllocationPrice.modelType - this.groupedAllocationConfig = + conversionRate = newSubscriptionGroupedAllocationPrice.conversionRate + modelType = newSubscriptionGroupedAllocationPrice.modelType + groupedAllocationConfig = newSubscriptionGroupedAllocationPrice.groupedAllocationConfig - this.currency = newSubscriptionGroupedAllocationPrice.currency - this.referenceId = newSubscriptionGroupedAllocationPrice.referenceId - additionalProperties( + currency = newSubscriptionGroupedAllocationPrice.currency + referenceId = newSubscriptionGroupedAllocationPrice.referenceId + additionalProperties = newSubscriptionGroupedAllocationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -23255,75 +18625,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -23331,37 +18658,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -23369,16 +18676,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -23387,88 +18684,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedAllocationConfig(groupedAllocationConfig: GroupedAllocationConfig) = - groupedAllocationConfig(JsonField.of(groupedAllocationConfig)) - - @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun groupedAllocationConfig( - groupedAllocationConfig: JsonField - ) = apply { this.groupedAllocationConfig = groupedAllocationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.groupedAllocationConfig = groupedAllocationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23476,22 +18726,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionGroupedAllocationPrice = NewSubscriptionGroupedAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedAllocationConfig) { + "`groupedAllocationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -23580,25 +18840,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedAllocationConfig.Builder::class) @NoAutoDetect class GroupedAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23614,24 +18867,32 @@ constructor( @JvmSynthetic internal fun from(groupedAllocationConfig: GroupedAllocationConfig) = apply { - additionalProperties(groupedAllocationConfig.additionalProperties) + additionalProperties = + groupedAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedAllocationConfig = GroupedAllocationConfig(additionalProperties.toImmutable()) } @@ -23710,43 +18971,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23756,57 +19000,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -23892,43 +19135,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23938,8 +19164,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -23947,49 +19173,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -24076,25 +19301,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24109,24 +19327,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -24165,238 +19390,123 @@ constructor( "NewSubscriptionGroupedAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedAllocationConfig=$groupedAllocationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize( - builder = NewSubscriptionGroupedWithProratedMinimumPrice.Builder::class - ) @NoAutoDetect class NewSubscriptionGroupedWithProratedMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedWithProratedMinimumConfig: - JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_prorated_minimum_config") + private val groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = - groupedWithProratedMinimumConfig.getRequired( - "grouped_with_prorated_minimum_config" - ) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun _groupedWithProratedMinimumConfig() = groupedWithProratedMinimumConfig + fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = + groupedWithProratedMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionGroupedWithProratedMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedWithProratedMinimumConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24406,27 +19516,24 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null private var groupedWithProratedMinimumConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + GroupedWithProratedMinimumConfig? = + null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -24434,37 +19541,36 @@ constructor( newSubscriptionGroupedWithProratedMinimumPrice: NewSubscriptionGroupedWithProratedMinimumPrice ) = apply { - this.metadata = newSubscriptionGroupedWithProratedMinimumPrice.metadata - this.externalPriceId = + metadata = newSubscriptionGroupedWithProratedMinimumPrice.metadata + externalPriceId = newSubscriptionGroupedWithProratedMinimumPrice.externalPriceId - this.name = newSubscriptionGroupedWithProratedMinimumPrice.name - this.billableMetricId = + name = newSubscriptionGroupedWithProratedMinimumPrice.name + billableMetricId = newSubscriptionGroupedWithProratedMinimumPrice.billableMetricId - this.itemId = newSubscriptionGroupedWithProratedMinimumPrice.itemId - this.billedInAdvance = + itemId = newSubscriptionGroupedWithProratedMinimumPrice.itemId + billedInAdvance = newSubscriptionGroupedWithProratedMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + fixedPriceQuantity = newSubscriptionGroupedWithProratedMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionGroupedWithProratedMinimumPrice.invoiceGroupingKey - this.cadence = newSubscriptionGroupedWithProratedMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionGroupedWithProratedMinimumPrice.cadence + billingCycleConfiguration = newSubscriptionGroupedWithProratedMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionGroupedWithProratedMinimumPrice .invoicingCycleConfiguration - this.conversionRate = + conversionRate = newSubscriptionGroupedWithProratedMinimumPrice.conversionRate - this.modelType = newSubscriptionGroupedWithProratedMinimumPrice.modelType - this.groupedWithProratedMinimumConfig = + modelType = newSubscriptionGroupedWithProratedMinimumPrice.modelType + groupedWithProratedMinimumConfig = newSubscriptionGroupedWithProratedMinimumPrice .groupedWithProratedMinimumConfig - this.currency = newSubscriptionGroupedWithProratedMinimumPrice.currency - this.referenceId = - newSubscriptionGroupedWithProratedMinimumPrice.referenceId - additionalProperties( + currency = newSubscriptionGroupedWithProratedMinimumPrice.currency + referenceId = newSubscriptionGroupedWithProratedMinimumPrice.referenceId + additionalProperties = newSubscriptionGroupedWithProratedMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -24472,75 +19578,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -24548,37 +19611,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -24586,16 +19629,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -24604,53 +19637,19 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedWithProratedMinimumConfig( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig - ) = - groupedWithProratedMinimumConfig( - JsonField.of(groupedWithProratedMinimumConfig) - ) - - @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun groupedWithProratedMinimumConfig( - groupedWithProratedMinimumConfig: - JsonField ) = apply { this.groupedWithProratedMinimumConfig = groupedWithProratedMinimumConfig } @@ -24659,40 +19658,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24700,22 +19680,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionGroupedWithProratedMinimumPrice = NewSubscriptionGroupedWithProratedMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedWithProratedMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedWithProratedMinimumConfig) { + "`groupedWithProratedMinimumConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -24804,25 +19794,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithProratedMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithProratedMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedWithProratedMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24839,26 +19822,32 @@ constructor( internal fun from( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = apply { - additionalProperties( - groupedWithProratedMinimumConfig.additionalProperties - ) + additionalProperties = + groupedWithProratedMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithProratedMinimumConfig = GroupedWithProratedMinimumConfig(additionalProperties.toImmutable()) } @@ -24938,43 +19927,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24984,57 +19956,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -25120,43 +20091,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25166,8 +20120,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -25175,49 +20129,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -25304,25 +20257,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25337,24 +20283,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -25393,233 +20346,122 @@ constructor( "NewSubscriptionGroupedWithProratedMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithProratedMinimumConfig=$groupedWithProratedMinimumConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_with_proration_config") + private val bulkWithProrationConfig: BulkWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkWithProrationConfig(): BulkWithProrationConfig = - bulkWithProrationConfig.getRequired("bulk_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun _bulkWithProrationConfig() = bulkWithProrationConfig + fun bulkWithProrationConfig(): BulkWithProrationConfig = bulkWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25629,57 +20471,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkWithProrationConfig: BulkWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionBulkWithProrationPrice: NewSubscriptionBulkWithProrationPrice ) = apply { - this.metadata = newSubscriptionBulkWithProrationPrice.metadata - this.externalPriceId = newSubscriptionBulkWithProrationPrice.externalPriceId - this.name = newSubscriptionBulkWithProrationPrice.name - this.billableMetricId = - newSubscriptionBulkWithProrationPrice.billableMetricId - this.itemId = newSubscriptionBulkWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionBulkWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionBulkWithProrationPrice.metadata + externalPriceId = newSubscriptionBulkWithProrationPrice.externalPriceId + name = newSubscriptionBulkWithProrationPrice.name + billableMetricId = newSubscriptionBulkWithProrationPrice.billableMetricId + itemId = newSubscriptionBulkWithProrationPrice.itemId + billedInAdvance = newSubscriptionBulkWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionBulkWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionBulkWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionBulkWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkWithProrationPrice.conversionRate - this.modelType = newSubscriptionBulkWithProrationPrice.modelType - this.bulkWithProrationConfig = + conversionRate = newSubscriptionBulkWithProrationPrice.conversionRate + modelType = newSubscriptionBulkWithProrationPrice.modelType + bulkWithProrationConfig = newSubscriptionBulkWithProrationPrice.bulkWithProrationConfig - this.currency = newSubscriptionBulkWithProrationPrice.currency - this.referenceId = newSubscriptionBulkWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionBulkWithProrationPrice.currency + referenceId = newSubscriptionBulkWithProrationPrice.referenceId + additionalProperties = newSubscriptionBulkWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -25687,75 +20524,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -25763,37 +20557,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -25801,16 +20575,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -25819,88 +20583,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun bulkWithProrationConfig(bulkWithProrationConfig: BulkWithProrationConfig) = - bulkWithProrationConfig(JsonField.of(bulkWithProrationConfig)) - - @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun bulkWithProrationConfig( - bulkWithProrationConfig: JsonField - ) = apply { this.bulkWithProrationConfig = bulkWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.bulkWithProrationConfig = bulkWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25908,47 +20625,50 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkWithProrationPrice = NewSubscriptionBulkWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkWithProrationConfig) { + "`bulkWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkWithProrationConfig.Builder::class) @NoAutoDetect class BulkWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25964,24 +20684,32 @@ constructor( @JvmSynthetic internal fun from(bulkWithProrationConfig: BulkWithProrationConfig) = apply { - additionalProperties(bulkWithProrationConfig.additionalProperties) + additionalProperties = + bulkWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkWithProrationConfig = BulkWithProrationConfig(additionalProperties.toImmutable()) } @@ -26142,43 +20870,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26188,57 +20899,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -26324,43 +21034,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26370,8 +21063,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -26379,49 +21072,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -26508,25 +21200,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26541,24 +21226,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -26616,14 +21308,15 @@ constructor( "AddPrice{priceId=$priceId, externalPriceId=$externalPriceId, price=$price, startDate=$startDate, endDate=$endDate, planPhaseOrder=$planPhaseOrder, minimumAmount=$minimumAmount, maximumAmount=$maximumAmount, discounts=$discounts, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: Long?, - private val month: Long?, - private val year: Long?, - private val additionalProperties: Map, + @JsonProperty("day") private val day: Long, + @JsonProperty("month") private val month: Long?, + @JsonProperty("year") private val year: Long?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -26632,19 +21325,19 @@ constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") fun day(): Long? = day + @JsonProperty("day") fun day(): Long = day /** * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") fun month(): Long? = month + @JsonProperty("month") fun month(): Optional = Optional.ofNullable(month) /** * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored on * 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") fun year(): Long? = year + @JsonProperty("year") fun year(): Optional = Optional.ofNullable(year) @JsonAnyGetter @ExcludeMissing @@ -26667,10 +21360,11 @@ constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -26679,34 +21373,39 @@ constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") fun day(day: Long) = apply { this.day = day } + fun day(day: Long) = apply { this.day = day } /** * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") fun month(month: Long) = apply { this.month = month } + fun month(month: Long) = apply { this.month = month } /** * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") fun year(year: Long) = apply { this.year = year } + fun year(year: Long) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( checkNotNull(day) { "`day` is required but was not set" }, @@ -26802,11 +21501,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -26826,23 +21526,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -26863,16 +21568,17 @@ constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RemoveAdjustment.Builder::class) @NoAutoDetect class RemoveAdjustment + @JsonCreator private constructor( - private val adjustmentId: String?, - private val additionalProperties: Map, + @JsonProperty("adjustment_id") private val adjustmentId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the adjustment to remove on the subscription. */ - @JsonProperty("adjustment_id") fun adjustmentId(): String? = adjustmentId + @JsonProperty("adjustment_id") fun adjustmentId(): String = adjustmentId @JsonAnyGetter @ExcludeMissing @@ -26892,28 +21598,32 @@ constructor( @JvmSynthetic internal fun from(removeAdjustment: RemoveAdjustment) = apply { - this.adjustmentId = removeAdjustment.adjustmentId - additionalProperties(removeAdjustment.additionalProperties) + adjustmentId = removeAdjustment.adjustmentId + additionalProperties = removeAdjustment.additionalProperties.toMutableMap() } /** The id of the adjustment to remove on the subscription. */ - @JsonProperty("adjustment_id") fun adjustmentId(adjustmentId: String) = apply { this.adjustmentId = adjustmentId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RemoveAdjustment = RemoveAdjustment( checkNotNull(adjustmentId) { "`adjustmentId` is required but was not set" }, @@ -26939,20 +21649,22 @@ constructor( "RemoveAdjustment{adjustmentId=$adjustmentId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RemovePrice.Builder::class) @NoAutoDetect class RemovePrice + @JsonCreator private constructor( - private val priceId: String?, - private val externalPriceId: String?, - private val additionalProperties: Map, + @JsonProperty("price_id") private val priceId: String?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the price to remove on the subscription. */ - @JsonProperty("price_id") fun priceId(): String? = priceId + @JsonProperty("price_id") fun priceId(): Optional = Optional.ofNullable(priceId) /** The external price id of the price to remove on the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) @JsonAnyGetter @ExcludeMissing @@ -26973,35 +21685,38 @@ constructor( @JvmSynthetic internal fun from(removePrice: RemovePrice) = apply { - this.priceId = removePrice.priceId - this.externalPriceId = removePrice.externalPriceId - additionalProperties(removePrice.additionalProperties) + priceId = removePrice.priceId + externalPriceId = removePrice.externalPriceId + additionalProperties = removePrice.additionalProperties.toMutableMap() } /** The id of the price to remove on the subscription. */ - @JsonProperty("price_id") fun priceId(priceId: String) = apply { this.priceId = priceId } /** The external price id of the price to remove on the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RemovePrice = RemovePrice( priceId, @@ -27028,21 +21743,22 @@ constructor( "RemovePrice{priceId=$priceId, externalPriceId=$externalPriceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ReplaceAdjustment.Builder::class) @NoAutoDetect class ReplaceAdjustment + @JsonCreator private constructor( - private val adjustment: Adjustment?, - private val replacesAdjustmentId: String?, - private val additionalProperties: Map, + @JsonProperty("adjustment") private val adjustment: Adjustment, + @JsonProperty("replaces_adjustment_id") private val replacesAdjustmentId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(): Adjustment? = adjustment + @JsonProperty("adjustment") fun adjustment(): Adjustment = adjustment /** The id of the adjustment on the plan to replace in the subscription. */ @JsonProperty("replaces_adjustment_id") - fun replacesAdjustmentId(): String? = replacesAdjustmentId + fun replacesAdjustmentId(): String = replacesAdjustmentId @JsonAnyGetter @ExcludeMissing @@ -27063,35 +21779,38 @@ constructor( @JvmSynthetic internal fun from(replaceAdjustment: ReplaceAdjustment) = apply { - this.adjustment = replaceAdjustment.adjustment - this.replacesAdjustmentId = replaceAdjustment.replacesAdjustmentId - additionalProperties(replaceAdjustment.additionalProperties) + adjustment = replaceAdjustment.adjustment + replacesAdjustmentId = replaceAdjustment.replacesAdjustmentId + additionalProperties = replaceAdjustment.additionalProperties.toMutableMap() } /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(adjustment: Adjustment) = apply { this.adjustment = adjustment } /** The id of the adjustment on the plan to replace in the subscription. */ - @JsonProperty("replaces_adjustment_id") fun replacesAdjustmentId(replacesAdjustmentId: String) = apply { this.replacesAdjustmentId = replacesAdjustmentId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ReplaceAdjustment = ReplaceAdjustment( checkNotNull(adjustment) { "`adjustment` is required but was not set" }, @@ -27114,8 +21833,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newPercentageDiscount(): Optional = Optional.ofNullable(newPercentageDiscount) @@ -27166,26 +21883,6 @@ constructor( } } - fun validate(): Adjustment = apply { - if (!validated) { - if ( - newPercentageDiscount == null && - newUsageDiscount == null && - newAmountDiscount == null && - newMinimum == null && - newMaximum == null - ) { - throw OrbInvalidDataException("Unknown Adjustment: $_json") - } - newPercentageDiscount?.validate() - newUsageDiscount?.validate() - newAmountDiscount?.validate() - newMinimum?.validate() - newMaximum?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -27255,40 +21952,29 @@ constructor( when (adjustmentType) { "percentage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newPercentageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newPercentageDiscount = it, _json = json) + } } "usage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newUsageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newUsageDiscount = it, _json = json) + } } "amount_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newAmountDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newAmountDiscount = it, _json = json) + } } "minimum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMinimum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMinimum = it, _json = json) + } } "maximum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMaximum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMaximum = it, _json = json) + } } } @@ -27318,70 +22004,39 @@ constructor( } } - @JsonDeserialize(builder = NewPercentageDiscount.Builder::class) @NoAutoDetect class NewPercentageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun percentageDiscount(): Double = - percentageDiscount.getRequired("percentage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType @JsonProperty("percentage_discount") - @ExcludeMissing - fun _percentageDiscount() = percentageDiscount + fun percentageDiscount(): Double = percentageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPercentageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - percentageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27391,29 +22046,24 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var percentageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var percentageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPercentageDiscount: NewPercentageDiscount) = apply { - this.appliesToPriceIds = newPercentageDiscount.appliesToPriceIds - this.isInvoiceLevel = newPercentageDiscount.isInvoiceLevel - this.adjustmentType = newPercentageDiscount.adjustmentType - this.percentageDiscount = newPercentageDiscount.percentageDiscount - additionalProperties(newPercentageDiscount.additionalProperties) + appliesToPriceIds = newPercentageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newPercentageDiscount.isInvoiceLevel + adjustmentType = newPercentageDiscount.adjustmentType + percentageDiscount = newPercentageDiscount.percentageDiscount + additionalProperties = + newPercentageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -27421,45 +22071,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun percentageDiscount(percentageDiscount: Double) = - percentageDiscount(JsonField.of(percentageDiscount)) - - @JsonProperty("percentage_discount") - @ExcludeMissing - fun percentageDiscount(percentageDiscount: JsonField) = apply { + fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27467,12 +22097,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPercentageDiscount = NewPercentageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - percentageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(percentageDiscount) { + "`percentageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -27547,67 +22192,38 @@ constructor( "NewPercentageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewUsageDiscount.Builder::class) @NoAutoDetect class NewUsageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("usage_discount") private val usageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun usageDiscount(): Double = usageDiscount.getRequired("usage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("usage_discount") @ExcludeMissing fun _usageDiscount() = usageDiscount + @JsonProperty("usage_discount") fun usageDiscount(): Double = usageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewUsageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - usageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27617,29 +22233,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var usageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var usageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newUsageDiscount: NewUsageDiscount) = apply { - this.appliesToPriceIds = newUsageDiscount.appliesToPriceIds - this.isInvoiceLevel = newUsageDiscount.isInvoiceLevel - this.adjustmentType = newUsageDiscount.adjustmentType - this.usageDiscount = newUsageDiscount.usageDiscount - additionalProperties(newUsageDiscount.additionalProperties) + appliesToPriceIds = newUsageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newUsageDiscount.isInvoiceLevel + adjustmentType = newUsageDiscount.adjustmentType + usageDiscount = newUsageDiscount.usageDiscount + additionalProperties = newUsageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -27647,45 +22257,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun usageDiscount(usageDiscount: Double) = - usageDiscount(JsonField.of(usageDiscount)) - - @JsonProperty("usage_discount") - @ExcludeMissing - fun usageDiscount(usageDiscount: JsonField) = apply { + fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27693,12 +22283,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewUsageDiscount = NewUsageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - usageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(usageDiscount) { + "`usageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -27773,69 +22378,38 @@ constructor( "NewUsageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewAmountDiscount.Builder::class) @NoAutoDetect class NewAmountDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("amount_discount") private val amountDiscount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun amountDiscount(): String = amountDiscount.getRequired("amount_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("amount_discount") - @ExcludeMissing - fun _amountDiscount() = amountDiscount + @JsonProperty("amount_discount") fun amountDiscount(): String = amountDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewAmountDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - amountDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27845,29 +22419,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var amountDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var amountDiscount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newAmountDiscount: NewAmountDiscount) = apply { - this.appliesToPriceIds = newAmountDiscount.appliesToPriceIds - this.isInvoiceLevel = newAmountDiscount.isInvoiceLevel - this.adjustmentType = newAmountDiscount.adjustmentType - this.amountDiscount = newAmountDiscount.amountDiscount - additionalProperties(newAmountDiscount.additionalProperties) + appliesToPriceIds = newAmountDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newAmountDiscount.isInvoiceLevel + adjustmentType = newAmountDiscount.adjustmentType + amountDiscount = newAmountDiscount.amountDiscount + additionalProperties = newAmountDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -27875,45 +22443,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun amountDiscount(amountDiscount: String) = - amountDiscount(JsonField.of(amountDiscount)) - - @JsonProperty("amount_discount") - @ExcludeMissing - fun amountDiscount(amountDiscount: JsonField) = apply { + fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27921,12 +22469,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewAmountDiscount = NewAmountDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - amountDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(amountDiscount) { + "`amountDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -28001,75 +22564,42 @@ constructor( "NewAmountDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMinimum.Builder::class) @NoAutoDetect class NewMinimum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("item_id") private val itemId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(): String = itemId.getRequired("item_id") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("minimum_amount") @ExcludeMissing fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMinimum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - minimumAmount() - itemId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -28079,31 +22609,25 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var minimumAmount: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var minimumAmount: String? = null + private var itemId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMinimum: NewMinimum) = apply { - this.appliesToPriceIds = newMinimum.appliesToPriceIds - this.isInvoiceLevel = newMinimum.isInvoiceLevel - this.adjustmentType = newMinimum.adjustmentType - this.minimumAmount = newMinimum.minimumAmount - this.itemId = newMinimum.itemId - additionalProperties(newMinimum.additionalProperties) + appliesToPriceIds = newMinimum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMinimum.isInvoiceLevel + adjustmentType = newMinimum.adjustmentType + minimumAmount = newMinimum.minimumAmount + itemId = newMinimum.itemId + additionalProperties = newMinimum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -28111,53 +22635,28 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28165,13 +22664,28 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMinimum = NewMinimum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - minimumAmount, - itemId, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, + checkNotNull(itemId) { "`itemId` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -28246,67 +22760,38 @@ constructor( "NewMinimum{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMaximum.Builder::class) @NoAutoDetect class NewMaximum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("maximum_amount") private val maximumAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("maximum_amount") @ExcludeMissing fun _maximumAmount() = maximumAmount + @JsonProperty("maximum_amount") fun maximumAmount(): String = maximumAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMaximum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - maximumAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -28316,29 +22801,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var maximumAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMaximum: NewMaximum) = apply { - this.appliesToPriceIds = newMaximum.appliesToPriceIds - this.isInvoiceLevel = newMaximum.isInvoiceLevel - this.adjustmentType = newMaximum.adjustmentType - this.maximumAmount = newMaximum.maximumAmount - additionalProperties(newMaximum.additionalProperties) + appliesToPriceIds = newMaximum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMaximum.isInvoiceLevel + adjustmentType = newMaximum.adjustmentType + maximumAmount = newMaximum.maximumAmount + additionalProperties = newMaximum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -28346,45 +22825,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28392,12 +22851,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMaximum = NewMaximum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - maximumAmount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(maximumAmount) { + "`maximumAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -28491,53 +22965,59 @@ constructor( "ReplaceAdjustment{adjustment=$adjustment, replacesAdjustmentId=$replacesAdjustmentId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ReplacePrice.Builder::class) @NoAutoDetect class ReplacePrice + @JsonCreator private constructor( - private val priceId: String?, - private val externalPriceId: String?, - private val price: Price?, - private val fixedPriceQuantity: Double?, - private val replacesPriceId: String?, - private val minimumAmount: String?, - private val maximumAmount: String?, - private val discounts: List?, - private val additionalProperties: Map, + @JsonProperty("price_id") private val priceId: String?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("price") private val price: Price?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("replaces_price_id") private val replacesPriceId: String, + @JsonProperty("minimum_amount") private val minimumAmount: String?, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("discounts") private val discounts: List?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(): String? = priceId + @JsonProperty("price_id") fun priceId(): Optional = Optional.ofNullable(priceId) /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(): Price? = price + @JsonProperty("price") fun price(): Optional = Optional.ofNullable(price) /** The new quantity of the price, if the price is a fixed price. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The id of the price on the plan to replace in the subscription. */ - @JsonProperty("replaces_price_id") fun replacesPriceId(): String? = replacesPriceId + @JsonProperty("replaces_price_id") fun replacesPriceId(): String = replacesPriceId /** * [DEPRECATED] Use add_adjustments instead. The subscription's minimum amount for the * replacement price. */ - @JsonProperty("minimum_amount") fun minimumAmount(): String? = minimumAmount + @JsonProperty("minimum_amount") + fun minimumAmount(): Optional = Optional.ofNullable(minimumAmount) /** * [DEPRECATED] Use add_adjustments instead. The subscription's maximum amount for the * replacement price. */ - @JsonProperty("maximum_amount") fun maximumAmount(): String? = maximumAmount + @JsonProperty("maximum_amount") + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** * [DEPRECATED] Use add_adjustments instead. The subscription's discounts for the * replacement price. */ - @JsonProperty("discounts") fun discounts(): List? = discounts + @JsonProperty("discounts") + fun discounts(): Optional> = Optional.ofNullable(discounts) @JsonAnyGetter @ExcludeMissing @@ -28564,38 +23044,34 @@ constructor( @JvmSynthetic internal fun from(replacePrice: ReplacePrice) = apply { - this.priceId = replacePrice.priceId - this.externalPriceId = replacePrice.externalPriceId - this.price = replacePrice.price - this.fixedPriceQuantity = replacePrice.fixedPriceQuantity - this.replacesPriceId = replacePrice.replacesPriceId - this.minimumAmount = replacePrice.minimumAmount - this.maximumAmount = replacePrice.maximumAmount - this.discounts = replacePrice.discounts - additionalProperties(replacePrice.additionalProperties) + priceId = replacePrice.priceId + externalPriceId = replacePrice.externalPriceId + price = replacePrice.price + fixedPriceQuantity = replacePrice.fixedPriceQuantity + replacesPriceId = replacePrice.replacesPriceId + minimumAmount = replacePrice.minimumAmount + maximumAmount = replacePrice.maximumAmount + discounts = replacePrice.discounts?.toMutableList() + additionalProperties = replacePrice.additionalProperties.toMutableMap() } /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(priceId: String) = apply { this.priceId = priceId } /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(price: Price) = apply { this.price = price } + fun price(price: Price) = apply { this.price = price } /** The new quantity of the price, if the price is a fixed price. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The id of the price on the plan to replace in the subscription. */ - @JsonProperty("replaces_price_id") fun replacesPriceId(replacesPriceId: String) = apply { this.replacesPriceId = replacesPriceId } @@ -28604,37 +23080,39 @@ constructor( * [DEPRECATED] Use add_adjustments instead. The subscription's minimum amount for the * replacement price. */ - @JsonProperty("minimum_amount") fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** * [DEPRECATED] Use add_adjustments instead. The subscription's maximum amount for the * replacement price. */ - @JsonProperty("maximum_amount") fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** * [DEPRECATED] Use add_adjustments instead. The subscription's discounts for the * replacement price. */ - @JsonProperty("discounts") fun discounts(discounts: List) = apply { this.discounts = discounts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ReplacePrice = ReplacePrice( priceId, @@ -28651,33 +23129,36 @@ constructor( ) } - @JsonDeserialize(builder = Discount.Builder::class) @NoAutoDetect class Discount + @JsonCreator private constructor( - private val discountType: DiscountType?, - private val percentageDiscount: Double?, - private val usageDiscount: Double?, - private val amountDiscount: String?, - private val additionalProperties: Map, + @JsonProperty("discount_type") private val discountType: DiscountType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double?, + @JsonProperty("usage_discount") private val usageDiscount: Double?, + @JsonProperty("amount_discount") private val amountDiscount: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("discount_type") fun discountType(): DiscountType? = discountType + @JsonProperty("discount_type") fun discountType(): DiscountType = discountType /** * Only available if discount_type is `percentage`. This is a number between 0 and 1. */ @JsonProperty("percentage_discount") - fun percentageDiscount(): Double? = percentageDiscount + fun percentageDiscount(): Optional = Optional.ofNullable(percentageDiscount) /** * Only available if discount_type is `usage`. Number of usage units that this discount * is for */ - @JsonProperty("usage_discount") fun usageDiscount(): Double? = usageDiscount + @JsonProperty("usage_discount") + fun usageDiscount(): Optional = Optional.ofNullable(usageDiscount) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") fun amountDiscount(): String? = amountDiscount + @JsonProperty("amount_discount") + fun amountDiscount(): Optional = Optional.ofNullable(amountDiscount) @JsonAnyGetter @ExcludeMissing @@ -28700,14 +23181,13 @@ constructor( @JvmSynthetic internal fun from(discount: Discount) = apply { - this.discountType = discount.discountType - this.percentageDiscount = discount.percentageDiscount - this.usageDiscount = discount.usageDiscount - this.amountDiscount = discount.amountDiscount - additionalProperties(discount.additionalProperties) + discountType = discount.discountType + percentageDiscount = discount.percentageDiscount + usageDiscount = discount.usageDiscount + amountDiscount = discount.amountDiscount + additionalProperties = discount.additionalProperties.toMutableMap() } - @JsonProperty("discount_type") fun discountType(discountType: DiscountType) = apply { this.discountType = discountType } @@ -28716,7 +23196,6 @@ constructor( * Only available if discount_type is `percentage`. This is a number between 0 * and 1. */ - @JsonProperty("percentage_discount") fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } @@ -28725,25 +23204,22 @@ constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28751,6 +23227,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Discount = Discount( checkNotNull(discountType) { "`discountType` is required but was not set" }, @@ -28885,8 +23369,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newSubscriptionUnitPrice(): Optional = Optional.ofNullable(newSubscriptionUnitPrice) @@ -29135,52 +23617,6 @@ constructor( } } - fun validate(): Price = apply { - if (!validated) { - if ( - newSubscriptionUnitPrice == null && - newSubscriptionPackagePrice == null && - newSubscriptionMatrixPrice == null && - newSubscriptionTieredPrice == null && - newSubscriptionTieredBpsPrice == null && - newSubscriptionBpsPrice == null && - newSubscriptionBulkBpsPrice == null && - newSubscriptionBulkPrice == null && - newSubscriptionThresholdTotalAmountPrice == null && - newSubscriptionTieredPackagePrice == null && - newSubscriptionTieredWithMinimumPrice == null && - newSubscriptionUnitWithPercentPrice == null && - newSubscriptionPackageWithAllocationPrice == null && - newSubscriptionTierWithProrationPrice == null && - newSubscriptionUnitWithProrationPrice == null && - newSubscriptionGroupedAllocationPrice == null && - newSubscriptionGroupedWithProratedMinimumPrice == null && - newSubscriptionBulkWithProrationPrice == null - ) { - throw OrbInvalidDataException("Unknown Price: $_json") - } - newSubscriptionUnitPrice?.validate() - newSubscriptionPackagePrice?.validate() - newSubscriptionMatrixPrice?.validate() - newSubscriptionTieredPrice?.validate() - newSubscriptionTieredBpsPrice?.validate() - newSubscriptionBpsPrice?.validate() - newSubscriptionBulkBpsPrice?.validate() - newSubscriptionBulkPrice?.validate() - newSubscriptionThresholdTotalAmountPrice?.validate() - newSubscriptionTieredPackagePrice?.validate() - newSubscriptionTieredWithMinimumPrice?.validate() - newSubscriptionUnitWithPercentPrice?.validate() - newSubscriptionPackageWithAllocationPrice?.validate() - newSubscriptionTierWithProrationPrice?.validate() - newSubscriptionUnitWithProrationPrice?.validate() - newSubscriptionGroupedAllocationPrice?.validate() - newSubscriptionGroupedWithProratedMinimumPrice?.validate() - newSubscriptionBulkWithProrationPrice?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -29449,76 +23885,55 @@ constructor( when (modelType) { "unit" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionUnitPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionUnitPrice = it, _json = json) + } } "package" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionPackagePrice = it, _json = json) } } "matrix" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionMatrixPrice = it, _json = json) } } "tiered" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionTieredPrice = it, _json = json) } } "tiered_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionTieredBpsPrice = it, _json = json) } } "bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionBpsPrice = it, _json = json) + } } "bulk_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionBulkBpsPrice = it, _json = json) } } "bulk" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionBulkPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionBulkPrice = it, _json = json) + } } "threshold_total_amount" -> { tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionThresholdTotalAmountPrice = it, @@ -29530,9 +23945,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTieredPackagePrice = it, @@ -29544,9 +23957,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTieredWithMinimumPrice = it, @@ -29558,9 +23969,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionUnitWithPercentPrice = it, @@ -29572,9 +23981,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionPackageWithAllocationPrice = it, @@ -29586,9 +23993,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTierWithProrationPrice = it, @@ -29600,9 +24005,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionUnitWithProrationPrice = it, @@ -29614,9 +24017,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionGroupedAllocationPrice = it, @@ -29628,9 +24029,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionGroupedWithProratedMinimumPrice = it, @@ -29642,9 +24041,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionBulkWithProrationPrice = it, @@ -29710,230 +24107,120 @@ constructor( } } - @JsonDeserialize(builder = NewSubscriptionUnitPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_config") private val unitConfig: UnitConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitConfig(): UnitConfig = unitConfig.getRequired("unit_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("unit_config") @ExcludeMissing fun _unitConfig() = unitConfig + @JsonProperty("unit_config") fun unitConfig(): UnitConfig = unitConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -29943,48 +24230,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitConfig: UnitConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionUnitPrice: NewSubscriptionUnitPrice) = apply { - this.metadata = newSubscriptionUnitPrice.metadata - this.externalPriceId = newSubscriptionUnitPrice.externalPriceId - this.name = newSubscriptionUnitPrice.name - this.billableMetricId = newSubscriptionUnitPrice.billableMetricId - this.itemId = newSubscriptionUnitPrice.itemId - this.billedInAdvance = newSubscriptionUnitPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionUnitPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionUnitPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionUnitPrice.metadata + externalPriceId = newSubscriptionUnitPrice.externalPriceId + name = newSubscriptionUnitPrice.name + billableMetricId = newSubscriptionUnitPrice.billableMetricId + itemId = newSubscriptionUnitPrice.itemId + billedInAdvance = newSubscriptionUnitPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionUnitPrice.invoiceGroupingKey + cadence = newSubscriptionUnitPrice.cadence + billingCycleConfiguration = newSubscriptionUnitPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitPrice.conversionRate - this.modelType = newSubscriptionUnitPrice.modelType - this.unitConfig = newSubscriptionUnitPrice.unitConfig - this.currency = newSubscriptionUnitPrice.currency - this.referenceId = newSubscriptionUnitPrice.referenceId - additionalProperties(newSubscriptionUnitPrice.additionalProperties) + conversionRate = newSubscriptionUnitPrice.conversionRate + modelType = newSubscriptionUnitPrice.modelType + unitConfig = newSubscriptionUnitPrice.unitConfig + currency = newSubscriptionUnitPrice.currency + referenceId = newSubscriptionUnitPrice.referenceId + additionalProperties = + newSubscriptionUnitPrice.additionalProperties.toMutableMap() } /** @@ -29992,75 +24277,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -30068,37 +24310,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -30106,16 +24328,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -30124,87 +24336,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun unitConfig(unitConfig: UnitConfig) = unitConfig(JsonField.of(unitConfig)) - - @JsonProperty("unit_config") - @ExcludeMissing - fun unitConfig(unitConfig: JsonField) = apply { - this.unitConfig = unitConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun unitConfig(unitConfig: UnitConfig) = apply { this.unitConfig = unitConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30212,22 +24375,30 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitPrice = NewSubscriptionUnitPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitConfig) { "`unitConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), @@ -30368,33 +24539,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitConfig.Builder::class) @NoAutoDetect class UnitConfig + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Rate per unit of usage */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Rate per unit of usage */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitConfig = apply { - if (!validated) { - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30404,43 +24564,48 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(unitConfig: UnitConfig) = apply { - this.unitAmount = unitConfig.unitAmount - additionalProperties(unitConfig.additionalProperties) + unitAmount = unitConfig.unitAmount + additionalProperties = unitConfig.additionalProperties.toMutableMap() } /** Rate per unit of usage */ - fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - - /** Rate per unit of usage */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { - this.unitAmount = unitAmount - } + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitConfig = - UnitConfig(unitAmount, additionalProperties.toImmutable()) + UnitConfig( + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + additionalProperties.toImmutable() + ) } override fun equals(other: Any?): Boolean { @@ -30465,43 +24630,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30511,57 +24659,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -30647,43 +24794,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30693,8 +24823,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -30702,49 +24832,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -30831,25 +24960,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30864,24 +24986,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -30920,230 +25049,120 @@ constructor( "NewSubscriptionUnitPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitConfig=$unitConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionPackagePrice.Builder::class) @NoAutoDetect class NewSubscriptionPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_config") private val packageConfig: PackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageConfig(): PackageConfig = packageConfig.getRequired("package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("package_config") @ExcludeMissing fun _packageConfig() = packageConfig + @JsonProperty("package_config") fun packageConfig(): PackageConfig = packageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31153,49 +25172,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageConfig: PackageConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionPackagePrice: NewSubscriptionPackagePrice) = apply { - this.metadata = newSubscriptionPackagePrice.metadata - this.externalPriceId = newSubscriptionPackagePrice.externalPriceId - this.name = newSubscriptionPackagePrice.name - this.billableMetricId = newSubscriptionPackagePrice.billableMetricId - this.itemId = newSubscriptionPackagePrice.itemId - this.billedInAdvance = newSubscriptionPackagePrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionPackagePrice.invoiceGroupingKey - this.cadence = newSubscriptionPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionPackagePrice.metadata + externalPriceId = newSubscriptionPackagePrice.externalPriceId + name = newSubscriptionPackagePrice.name + billableMetricId = newSubscriptionPackagePrice.billableMetricId + itemId = newSubscriptionPackagePrice.itemId + billedInAdvance = newSubscriptionPackagePrice.billedInAdvance + fixedPriceQuantity = newSubscriptionPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionPackagePrice.invoiceGroupingKey + cadence = newSubscriptionPackagePrice.cadence + billingCycleConfiguration = newSubscriptionPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionPackagePrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionPackagePrice.conversionRate - this.modelType = newSubscriptionPackagePrice.modelType - this.packageConfig = newSubscriptionPackagePrice.packageConfig - this.currency = newSubscriptionPackagePrice.currency - this.referenceId = newSubscriptionPackagePrice.referenceId - additionalProperties(newSubscriptionPackagePrice.additionalProperties) + conversionRate = newSubscriptionPackagePrice.conversionRate + modelType = newSubscriptionPackagePrice.modelType + packageConfig = newSubscriptionPackagePrice.packageConfig + currency = newSubscriptionPackagePrice.currency + referenceId = newSubscriptionPackagePrice.referenceId + additionalProperties = + newSubscriptionPackagePrice.additionalProperties.toMutableMap() } /** @@ -31203,75 +25220,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -31279,37 +25253,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -31317,16 +25271,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -31335,47 +25279,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun packageConfig(packageConfig: PackageConfig) = - packageConfig(JsonField.of(packageConfig)) - - @JsonProperty("package_config") - @ExcludeMissing - fun packageConfig(packageConfig: JsonField) = apply { + fun packageConfig(packageConfig: PackageConfig) = apply { this.packageConfig = packageConfig } @@ -31383,40 +25298,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -31424,22 +25320,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionPackagePrice = NewSubscriptionPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageConfig) { + "`packageConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -31580,49 +25486,29 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageConfig.Builder::class) @NoAutoDetect class PackageConfig + @JsonCreator private constructor( - private val packageAmount: JsonField, - private val packageSize: JsonField, - private val additionalProperties: Map, + @JsonProperty("package_amount") private val packageAmount: String, + @JsonProperty("package_size") private val packageSize: Long, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** A currency amount to rate usage by */ - fun packageAmount(): String = packageAmount.getRequired("package_amount") - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - fun packageSize(): Long = packageSize.getRequired("package_size") - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun _packageAmount() = packageAmount + @JsonProperty("package_amount") fun packageAmount(): String = packageAmount /** * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - @JsonProperty("package_size") @ExcludeMissing fun _packageSize() = packageSize + @JsonProperty("package_size") fun packageSize(): Long = packageSize @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageConfig = apply { - if (!validated) { - packageAmount() - packageSize() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31632,26 +25518,20 @@ constructor( class Builder { - private var packageAmount: JsonField = JsonMissing.of() - private var packageSize: JsonField = JsonMissing.of() + private var packageAmount: String? = null + private var packageSize: Long? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(packageConfig: PackageConfig) = apply { - this.packageAmount = packageConfig.packageAmount - this.packageSize = packageConfig.packageSize - additionalProperties(packageConfig.additionalProperties) + packageAmount = packageConfig.packageAmount + packageSize = packageConfig.packageSize + additionalProperties = packageConfig.additionalProperties.toMutableMap() } /** A currency amount to rate usage by */ - fun packageAmount(packageAmount: String) = - packageAmount(JsonField.of(packageAmount)) - - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun packageAmount(packageAmount: JsonField) = apply { + fun packageAmount(packageAmount: String) = apply { this.packageAmount = packageAmount } @@ -31659,37 +25539,40 @@ constructor( * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - fun packageSize(packageSize: Long) = packageSize(JsonField.of(packageSize)) - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - @JsonProperty("package_size") - @ExcludeMissing - fun packageSize(packageSize: JsonField) = apply { + fun packageSize(packageSize: Long) = apply { this.packageSize = packageSize } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageConfig = PackageConfig( - packageAmount, - packageSize, + checkNotNull(packageAmount) { + "`packageAmount` is required but was not set" + }, + checkNotNull(packageSize) { + "`packageSize` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -31716,43 +25599,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31762,57 +25628,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -31898,43 +25763,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31944,8 +25792,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -31953,49 +25801,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -32082,25 +25929,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32115,24 +25955,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -32171,230 +26018,120 @@ constructor( "NewSubscriptionPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageConfig=$packageConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionMatrixPrice.Builder::class) @NoAutoDetect class NewSubscriptionMatrixPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val matrixConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_config") private val matrixConfig: MatrixConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun matrixConfig(): MatrixConfig = matrixConfig.getRequired("matrix_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("matrix_config") @ExcludeMissing fun _matrixConfig() = matrixConfig + @JsonProperty("matrix_config") fun matrixConfig(): MatrixConfig = matrixConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionMatrixPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - matrixConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32404,49 +26141,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var matrixConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var matrixConfig: MatrixConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionMatrixPrice: NewSubscriptionMatrixPrice) = apply { - this.metadata = newSubscriptionMatrixPrice.metadata - this.externalPriceId = newSubscriptionMatrixPrice.externalPriceId - this.name = newSubscriptionMatrixPrice.name - this.billableMetricId = newSubscriptionMatrixPrice.billableMetricId - this.itemId = newSubscriptionMatrixPrice.itemId - this.billedInAdvance = newSubscriptionMatrixPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionMatrixPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionMatrixPrice.invoiceGroupingKey - this.cadence = newSubscriptionMatrixPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionMatrixPrice.metadata + externalPriceId = newSubscriptionMatrixPrice.externalPriceId + name = newSubscriptionMatrixPrice.name + billableMetricId = newSubscriptionMatrixPrice.billableMetricId + itemId = newSubscriptionMatrixPrice.itemId + billedInAdvance = newSubscriptionMatrixPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionMatrixPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionMatrixPrice.invoiceGroupingKey + cadence = newSubscriptionMatrixPrice.cadence + billingCycleConfiguration = newSubscriptionMatrixPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionMatrixPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionMatrixPrice.conversionRate - this.modelType = newSubscriptionMatrixPrice.modelType - this.matrixConfig = newSubscriptionMatrixPrice.matrixConfig - this.currency = newSubscriptionMatrixPrice.currency - this.referenceId = newSubscriptionMatrixPrice.referenceId - additionalProperties(newSubscriptionMatrixPrice.additionalProperties) + conversionRate = newSubscriptionMatrixPrice.conversionRate + modelType = newSubscriptionMatrixPrice.modelType + matrixConfig = newSubscriptionMatrixPrice.matrixConfig + currency = newSubscriptionMatrixPrice.currency + referenceId = newSubscriptionMatrixPrice.referenceId + additionalProperties = + newSubscriptionMatrixPrice.additionalProperties.toMutableMap() } /** @@ -32454,75 +26189,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -32530,37 +26222,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -32568,16 +26240,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -32586,47 +26248,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun matrixConfig(matrixConfig: MatrixConfig) = - matrixConfig(JsonField.of(matrixConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("matrix_config") - @ExcludeMissing - fun matrixConfig(matrixConfig: JsonField) = apply { + fun matrixConfig(matrixConfig: MatrixConfig) = apply { this.matrixConfig = matrixConfig } @@ -32634,40 +26267,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32675,22 +26289,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionMatrixPrice = NewSubscriptionMatrixPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - matrixConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(matrixConfig) { + "`matrixConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -32779,61 +26403,35 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensions: JsonField>, - private val defaultUnitAmount: JsonField, - private val matrixValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("default_unit_amount") private val defaultUnitAmount: String, + @JsonProperty("matrix_values") private val matrixValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** One or two event property values to evaluate matrix groups by */ - fun dimensions(): List = dimensions.getRequired("dimensions") - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - fun defaultUnitAmount(): String = - defaultUnitAmount.getRequired("default_unit_amount") - - /** Matrix values for specified matrix grouping keys */ - fun matrixValues(): List = - matrixValues.getRequired("matrix_values") - - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") @ExcludeMissing fun _dimensions() = dimensions + @JsonProperty("dimensions") fun dimensions(): List = dimensions /** * Default per unit rate for any usage not bucketed into a specified * matrix_value */ @JsonProperty("default_unit_amount") - @ExcludeMissing - fun _defaultUnitAmount() = defaultUnitAmount + fun defaultUnitAmount(): String = defaultUnitAmount /** Matrix values for specified matrix grouping keys */ @JsonProperty("matrix_values") - @ExcludeMissing - fun _matrixValues() = matrixValues + fun matrixValues(): List = matrixValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixConfig = apply { - if (!validated) { - dimensions() - defaultUnitAmount() - matrixValues().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32843,28 +26441,22 @@ constructor( class Builder { - private var dimensions: JsonField> = JsonMissing.of() - private var defaultUnitAmount: JsonField = JsonMissing.of() - private var matrixValues: JsonField> = JsonMissing.of() + private var dimensions: List? = null + private var defaultUnitAmount: String? = null + private var matrixValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensions = matrixConfig.dimensions - this.defaultUnitAmount = matrixConfig.defaultUnitAmount - this.matrixValues = matrixConfig.matrixValues - additionalProperties(matrixConfig.additionalProperties) + dimensions = matrixConfig.dimensions.toMutableList() + defaultUnitAmount = matrixConfig.defaultUnitAmount + matrixValues = matrixConfig.matrixValues.toMutableList() + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ - fun dimensions(dimensions: List) = - dimensions(JsonField.of(dimensions)) - - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") - @ExcludeMissing - fun dimensions(dimensions: JsonField>) = apply { + fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } @@ -32872,78 +26464,68 @@ constructor( * Default per unit rate for any usage not bucketed into a specified * matrix_value */ - fun defaultUnitAmount(defaultUnitAmount: String) = - defaultUnitAmount(JsonField.of(defaultUnitAmount)) - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - @JsonProperty("default_unit_amount") - @ExcludeMissing - fun defaultUnitAmount(defaultUnitAmount: JsonField) = apply { + fun defaultUnitAmount(defaultUnitAmount: String) = apply { this.defaultUnitAmount = defaultUnitAmount } /** Matrix values for specified matrix grouping keys */ - fun matrixValues(matrixValues: List) = - matrixValues(JsonField.of(matrixValues)) - - /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") - @ExcludeMissing - fun matrixValues(matrixValues: JsonField>) = apply { + fun matrixValues(matrixValues: List) = apply { this.matrixValues = matrixValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( - dimensions.map { it.toImmutable() }, - defaultUnitAmount, - matrixValues.map { it.toImmutable() }, + checkNotNull(dimensions) { + "`dimensions` is required but was not set" + } + .toImmutable(), + checkNotNull(defaultUnitAmount) { + "`defaultUnitAmount` is required but was not set" + }, + checkNotNull(matrixValues) { + "`matrixValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonProperty("dimension_values") + private val dimensionValues: List, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Unit price for the specified dimension_values */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - fun dimensionValues(): List = - dimensionValues.getRequired("dimension_values") - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount /** * One or two matrix keys to filter usage to this Matrix value by. For @@ -32951,21 +26533,12 @@ constructor( * cloud region and an instance tier. */ @JsonProperty("dimension_values") - @ExcludeMissing - fun _dimensionValues() = dimensionValues + fun dimensionValues(): List = dimensionValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixValue = apply { - if (!validated) { - unitAmount() - dimensionValues() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32975,26 +26548,21 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() - private var dimensionValues: JsonField> = JsonMissing.of() + private var unitAmount: String? = null + private var dimensionValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues.toMutableList() + additionalProperties = + matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } @@ -33003,39 +26571,41 @@ constructor( * example, ["region", "tier"] could be used to filter cloud usage by a * cloud region and an instance tier. */ - fun dimensionValues(dimensionValues: List) = - dimensionValues(JsonField.of(dimensionValues)) - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - @JsonProperty("dimension_values") - @ExcludeMissing - fun dimensionValues(dimensionValues: JsonField>) = apply { + fun dimensionValues(dimensionValues: List) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( - unitAmount, - dimensionValues.map { it.toImmutable() }, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + checkNotNull(dimensionValues) { + "`dimensionValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } @@ -33132,43 +26702,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33178,57 +26731,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -33314,43 +26866,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33360,8 +26895,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -33369,49 +26904,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -33498,25 +27032,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33531,24 +27058,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -33587,230 +27121,120 @@ constructor( "NewSubscriptionMatrixPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixConfig=$matrixConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_config") private val tieredConfig: TieredConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredConfig(): TieredConfig = tieredConfig.getRequired("tiered_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("tiered_config") @ExcludeMissing fun _tieredConfig() = tieredConfig + @JsonProperty("tiered_config") fun tieredConfig(): TieredConfig = tieredConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33820,49 +27244,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredConfig: TieredConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionTieredPrice: NewSubscriptionTieredPrice) = apply { - this.metadata = newSubscriptionTieredPrice.metadata - this.externalPriceId = newSubscriptionTieredPrice.externalPriceId - this.name = newSubscriptionTieredPrice.name - this.billableMetricId = newSubscriptionTieredPrice.billableMetricId - this.itemId = newSubscriptionTieredPrice.itemId - this.billedInAdvance = newSubscriptionTieredPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionTieredPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionTieredPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredPrice.metadata + externalPriceId = newSubscriptionTieredPrice.externalPriceId + name = newSubscriptionTieredPrice.name + billableMetricId = newSubscriptionTieredPrice.billableMetricId + itemId = newSubscriptionTieredPrice.itemId + billedInAdvance = newSubscriptionTieredPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredPrice.invoiceGroupingKey + cadence = newSubscriptionTieredPrice.cadence + billingCycleConfiguration = newSubscriptionTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredPrice.conversionRate - this.modelType = newSubscriptionTieredPrice.modelType - this.tieredConfig = newSubscriptionTieredPrice.tieredConfig - this.currency = newSubscriptionTieredPrice.currency - this.referenceId = newSubscriptionTieredPrice.referenceId - additionalProperties(newSubscriptionTieredPrice.additionalProperties) + conversionRate = newSubscriptionTieredPrice.conversionRate + modelType = newSubscriptionTieredPrice.modelType + tieredConfig = newSubscriptionTieredPrice.tieredConfig + currency = newSubscriptionTieredPrice.currency + referenceId = newSubscriptionTieredPrice.referenceId + additionalProperties = + newSubscriptionTieredPrice.additionalProperties.toMutableMap() } /** @@ -33870,75 +27292,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -33946,37 +27325,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -33984,16 +27343,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -34002,47 +27351,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredConfig(tieredConfig: TieredConfig) = - tieredConfig(JsonField.of(tieredConfig)) - - @JsonProperty("tiered_config") - @ExcludeMissing - fun tieredConfig(tieredConfig: JsonField) = apply { + fun tieredConfig(tieredConfig: TieredConfig) = apply { this.tieredConfig = tieredConfig } @@ -34050,40 +27370,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -34091,22 +27392,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredPrice = NewSubscriptionTieredPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredConfig) { + "`tieredConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -34247,33 +27558,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredConfig.Builder::class) @NoAutoDetect class TieredConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(): List = tiers.getRequired("tiers") - /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34283,98 +27583,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredConfig: TieredConfig) = apply { - this.tiers = tieredConfig.tiers - additionalProperties(tieredConfig.additionalProperties) + tiers = tieredConfig.tiers.toMutableList() + additionalProperties = tieredConfig.additionalProperties.toMutableMap() } /** * Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for rating based on total usage quantities into the specified tier - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredConfig = TieredConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") private val firstUnit: Double, + @JsonProperty("last_unit") private val lastUnit: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Inclusive tier starting value */ - fun firstUnit(): Double = firstUnit.getRequired("first_unit") + @JsonProperty("first_unit") fun firstUnit(): Double = firstUnit /** * Exclusive tier ending value. If null, this is treated as the last tier */ - fun lastUnit(): Optional = - Optional.ofNullable(lastUnit.getNullable("last_unit")) + @JsonProperty("last_unit") + fun lastUnit(): Optional = Optional.ofNullable(lastUnit) /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** Inclusive tier starting value */ - @JsonProperty("first_unit") @ExcludeMissing fun _firstUnit() = firstUnit - - /** - * Exclusive tier ending value. If null, this is treated as the last tier - */ - @JsonProperty("last_unit") @ExcludeMissing fun _lastUnit() = lastUnit - - /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - firstUnit() - lastUnit() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34384,77 +27665,65 @@ constructor( class Builder { - private var firstUnit: JsonField = JsonMissing.of() - private var lastUnit: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var firstUnit: Double? = null + private var lastUnit: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.firstUnit = tier.firstUnit - this.lastUnit = tier.lastUnit - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + firstUnit = tier.firstUnit + lastUnit = tier.lastUnit + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) - - /** Inclusive tier starting value */ - @JsonProperty("first_unit") - @ExcludeMissing - fun firstUnit(firstUnit: JsonField) = apply { - this.firstUnit = firstUnit - } + fun firstUnit(firstUnit: Double) = apply { this.firstUnit = firstUnit } /** * Exclusive tier ending value. If null, this is treated as the last * tier */ - fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) - - /** - * Exclusive tier ending value. If null, this is treated as the last - * tier - */ - @JsonProperty("last_unit") - @ExcludeMissing - fun lastUnit(lastUnit: JsonField) = apply { - this.lastUnit = lastUnit - } - - /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) + fun lastUnit(lastUnit: Double) = apply { this.lastUnit = lastUnit } /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - firstUnit, + checkNotNull(firstUnit) { + "`firstUnit` is required but was not set" + }, lastUnit, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -34499,43 +27768,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34545,57 +27797,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -34681,43 +27932,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34727,8 +27961,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -34736,49 +27970,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -34865,25 +28098,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34898,24 +28124,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -34954,233 +28187,121 @@ constructor( "NewSubscriptionTieredPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredConfig=$tieredConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredBpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_bps_config") private val tieredBpsConfig: TieredBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredBpsConfig(): TieredBpsConfig = - tieredBpsConfig.getRequired("tiered_bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun _tieredBpsConfig() = tieredBpsConfig + fun tieredBpsConfig(): TieredBpsConfig = tieredBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredBpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -35190,50 +28311,48 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredBpsConfig: TieredBpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredBpsPrice: NewSubscriptionTieredBpsPrice ) = apply { - this.metadata = newSubscriptionTieredBpsPrice.metadata - this.externalPriceId = newSubscriptionTieredBpsPrice.externalPriceId - this.name = newSubscriptionTieredBpsPrice.name - this.billableMetricId = newSubscriptionTieredBpsPrice.billableMetricId - this.itemId = newSubscriptionTieredBpsPrice.itemId - this.billedInAdvance = newSubscriptionTieredBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionTieredBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionTieredBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredBpsPrice.metadata + externalPriceId = newSubscriptionTieredBpsPrice.externalPriceId + name = newSubscriptionTieredBpsPrice.name + billableMetricId = newSubscriptionTieredBpsPrice.billableMetricId + itemId = newSubscriptionTieredBpsPrice.itemId + billedInAdvance = newSubscriptionTieredBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredBpsPrice.invoiceGroupingKey + cadence = newSubscriptionTieredBpsPrice.cadence + billingCycleConfiguration = newSubscriptionTieredBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredBpsPrice.conversionRate - this.modelType = newSubscriptionTieredBpsPrice.modelType - this.tieredBpsConfig = newSubscriptionTieredBpsPrice.tieredBpsConfig - this.currency = newSubscriptionTieredBpsPrice.currency - this.referenceId = newSubscriptionTieredBpsPrice.referenceId - additionalProperties(newSubscriptionTieredBpsPrice.additionalProperties) + conversionRate = newSubscriptionTieredBpsPrice.conversionRate + modelType = newSubscriptionTieredBpsPrice.modelType + tieredBpsConfig = newSubscriptionTieredBpsPrice.tieredBpsConfig + currency = newSubscriptionTieredBpsPrice.currency + referenceId = newSubscriptionTieredBpsPrice.referenceId + additionalProperties = + newSubscriptionTieredBpsPrice.additionalProperties.toMutableMap() } /** @@ -35241,75 +28360,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -35317,37 +28393,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -35355,16 +28411,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -35373,47 +28419,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = - tieredBpsConfig(JsonField.of(tieredBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun tieredBpsConfig(tieredBpsConfig: JsonField) = apply { + fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = apply { this.tieredBpsConfig = tieredBpsConfig } @@ -35421,40 +28438,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -35462,22 +28460,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredBpsPrice = NewSubscriptionTieredBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredBpsConfig) { + "`tieredBpsConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -35618,39 +28626,25 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredBpsConfig.Builder::class) @NoAutoDetect class TieredBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - fun tiers(): List = tiers.getRequired("tiers") - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -35660,111 +28654,84 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredBpsConfig: TieredBpsConfig) = apply { - this.tiers = tieredBpsConfig.tiers - additionalProperties(tieredBpsConfig.additionalProperties) + tiers = tieredBpsConfig.tiers.toMutableList() + additionalProperties = + tieredBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredBpsConfig = TieredBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Inclusive tier starting value */ - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** Exclusive tier ending value */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Per-event basis point rate */ - fun bps(): Double = bps.getRequired("bps") - - /** Per unit maximum to charge */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** Exclusive tier ending value */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Per-event basis point rate */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Per unit maximum to charge */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - minimumAmount() - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -35774,83 +28741,69 @@ constructor( class Builder { - private var minimumAmount: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var minimumAmount: String? = null + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.minimumAmount = tier.minimumAmount - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + minimumAmount = tier.minimumAmount + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** Exclusive tier ending value */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Exclusive tier ending value */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Per-event basis point rate */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Per-event basis point rate */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** Per unit maximum to charge */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) - - /** Per unit maximum to charge */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - minimumAmount, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -35896,43 +28849,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -35942,57 +28878,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -36078,43 +29013,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -36124,8 +29042,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -36133,49 +29051,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -36262,25 +29179,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -36295,24 +29205,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -36351,230 +29268,120 @@ constructor( "NewSubscriptionTieredBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredBpsConfig=$tieredBpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bps_config") private val bpsConfig: BpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bpsConfig(): BpsConfig = bpsConfig.getRequired("bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bps_config") @ExcludeMissing fun _bpsConfig() = bpsConfig + @JsonProperty("bps_config") fun bpsConfig(): BpsConfig = bpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -36584,48 +29391,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bpsConfig: BpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBpsPrice: NewSubscriptionBpsPrice) = apply { - this.metadata = newSubscriptionBpsPrice.metadata - this.externalPriceId = newSubscriptionBpsPrice.externalPriceId - this.name = newSubscriptionBpsPrice.name - this.billableMetricId = newSubscriptionBpsPrice.billableMetricId - this.itemId = newSubscriptionBpsPrice.itemId - this.billedInAdvance = newSubscriptionBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBpsPrice.metadata + externalPriceId = newSubscriptionBpsPrice.externalPriceId + name = newSubscriptionBpsPrice.name + billableMetricId = newSubscriptionBpsPrice.billableMetricId + itemId = newSubscriptionBpsPrice.itemId + billedInAdvance = newSubscriptionBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBpsPrice.invoiceGroupingKey + cadence = newSubscriptionBpsPrice.cadence + billingCycleConfiguration = newSubscriptionBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBpsPrice.conversionRate - this.modelType = newSubscriptionBpsPrice.modelType - this.bpsConfig = newSubscriptionBpsPrice.bpsConfig - this.currency = newSubscriptionBpsPrice.currency - this.referenceId = newSubscriptionBpsPrice.referenceId - additionalProperties(newSubscriptionBpsPrice.additionalProperties) + conversionRate = newSubscriptionBpsPrice.conversionRate + modelType = newSubscriptionBpsPrice.modelType + bpsConfig = newSubscriptionBpsPrice.bpsConfig + currency = newSubscriptionBpsPrice.currency + referenceId = newSubscriptionBpsPrice.referenceId + additionalProperties = + newSubscriptionBpsPrice.additionalProperties.toMutableMap() } /** @@ -36633,75 +29438,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -36709,37 +29471,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -36747,16 +29489,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -36765,87 +29497,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bpsConfig(bpsConfig: BpsConfig) = bpsConfig(JsonField.of(bpsConfig)) - - @JsonProperty("bps_config") - @ExcludeMissing - fun bpsConfig(bpsConfig: JsonField) = apply { - this.bpsConfig = bpsConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun bpsConfig(bpsConfig: BpsConfig) = apply { this.bpsConfig = bpsConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -36853,66 +29536,57 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBpsPrice = NewSubscriptionBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bpsConfig) { "`bpsConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BpsConfig.Builder::class) @NoAutoDetect class BpsConfig + @JsonCreator private constructor( - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Basis point take rate per event */ - fun bps(): Double = bps.getRequired("bps") - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - - /** Basis point take rate per event */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Optional currency amount maximum to cap spend per event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BpsConfig = apply { - if (!validated) { - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -36922,55 +29596,51 @@ constructor( class Builder { - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bpsConfig: BpsConfig) = apply { - this.bps = bpsConfig.bps - this.perUnitMaximum = bpsConfig.perUnitMaximum - additionalProperties(bpsConfig.additionalProperties) + bps = bpsConfig.bps + perUnitMaximum = bpsConfig.perUnitMaximum + additionalProperties = bpsConfig.additionalProperties.toMutableMap() } /** Basis point take rate per event */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis point take rate per event */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** Optional currency amount maximum to cap spend per event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BpsConfig = BpsConfig( - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -37132,43 +29802,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -37178,57 +29831,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -37314,43 +29966,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -37360,8 +29995,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -37369,49 +30004,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -37498,25 +30132,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -37531,24 +30158,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -37587,232 +30221,120 @@ constructor( "NewSubscriptionBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bpsConfig=$bpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkBpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_bps_config") private val bulkBpsConfig: BulkBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig.getRequired("bulk_bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun _bulkBpsConfig() = bulkBpsConfig + @JsonProperty("bulk_bps_config") fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkBpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -37822,49 +30344,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkBpsConfig: BulkBpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBulkBpsPrice: NewSubscriptionBulkBpsPrice) = apply { - this.metadata = newSubscriptionBulkBpsPrice.metadata - this.externalPriceId = newSubscriptionBulkBpsPrice.externalPriceId - this.name = newSubscriptionBulkBpsPrice.name - this.billableMetricId = newSubscriptionBulkBpsPrice.billableMetricId - this.itemId = newSubscriptionBulkBpsPrice.itemId - this.billedInAdvance = newSubscriptionBulkBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBulkBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBulkBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBulkBpsPrice.metadata + externalPriceId = newSubscriptionBulkBpsPrice.externalPriceId + name = newSubscriptionBulkBpsPrice.name + billableMetricId = newSubscriptionBulkBpsPrice.billableMetricId + itemId = newSubscriptionBulkBpsPrice.itemId + billedInAdvance = newSubscriptionBulkBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBulkBpsPrice.invoiceGroupingKey + cadence = newSubscriptionBulkBpsPrice.cadence + billingCycleConfiguration = newSubscriptionBulkBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkBpsPrice.conversionRate - this.modelType = newSubscriptionBulkBpsPrice.modelType - this.bulkBpsConfig = newSubscriptionBulkBpsPrice.bulkBpsConfig - this.currency = newSubscriptionBulkBpsPrice.currency - this.referenceId = newSubscriptionBulkBpsPrice.referenceId - additionalProperties(newSubscriptionBulkBpsPrice.additionalProperties) + conversionRate = newSubscriptionBulkBpsPrice.conversionRate + modelType = newSubscriptionBulkBpsPrice.modelType + bulkBpsConfig = newSubscriptionBulkBpsPrice.bulkBpsConfig + currency = newSubscriptionBulkBpsPrice.currency + referenceId = newSubscriptionBulkBpsPrice.referenceId + additionalProperties = + newSubscriptionBulkBpsPrice.additionalProperties.toMutableMap() } /** @@ -37872,75 +30392,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -37948,37 +30425,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -37986,16 +30443,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -38004,47 +30451,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = - bulkBpsConfig(JsonField.of(bulkBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun bulkBpsConfig(bulkBpsConfig: JsonField) = apply { + fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = apply { this.bulkBpsConfig = bulkBpsConfig } @@ -38052,40 +30470,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -38093,61 +30492,57 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkBpsPrice = NewSubscriptionBulkBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkBpsConfig) { + "`bulkBpsConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkBpsConfig.Builder::class) @NoAutoDetect class BulkBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a single - * tier based on total volume - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single * tier based on total volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38157,101 +30552,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkBpsConfig: BulkBpsConfig) = apply { - this.tiers = bulkBpsConfig.tiers - additionalProperties(bulkBpsConfig.additionalProperties) + tiers = bulkBpsConfig.tiers.toMutableList() + additionalProperties = bulkBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a * single tier based on total volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a - * single tier based on total volume - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkBpsConfig = BulkBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for tier */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Basis points to rate on */ - fun bps(): Double = bps.getRequired("bps") - - /** The maximum amount to charge for any one event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Upper bound for tier */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Basis points to rate on */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** The maximum amount to charge for any one event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38261,69 +30634,59 @@ constructor( class Builder { - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for tier */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Upper bound for tier */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Basis points to rate on */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis points to rate on */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** The maximum amount to charge for any one event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) - - /** The maximum amount to charge for any one event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -38503,43 +30866,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38549,57 +30895,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -38685,43 +31030,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38731,8 +31059,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -38740,49 +31068,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -38869,25 +31196,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38902,24 +31222,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -38958,230 +31285,120 @@ constructor( "NewSubscriptionBulkBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkBpsConfig=$bulkBpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_config") private val bulkConfig: BulkConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkConfig(): BulkConfig = bulkConfig.getRequired("bulk_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_config") @ExcludeMissing fun _bulkConfig() = bulkConfig + @JsonProperty("bulk_config") fun bulkConfig(): BulkConfig = bulkConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -39191,48 +31408,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkConfig: BulkConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBulkPrice: NewSubscriptionBulkPrice) = apply { - this.metadata = newSubscriptionBulkPrice.metadata - this.externalPriceId = newSubscriptionBulkPrice.externalPriceId - this.name = newSubscriptionBulkPrice.name - this.billableMetricId = newSubscriptionBulkPrice.billableMetricId - this.itemId = newSubscriptionBulkPrice.itemId - this.billedInAdvance = newSubscriptionBulkPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBulkPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBulkPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBulkPrice.metadata + externalPriceId = newSubscriptionBulkPrice.externalPriceId + name = newSubscriptionBulkPrice.name + billableMetricId = newSubscriptionBulkPrice.billableMetricId + itemId = newSubscriptionBulkPrice.itemId + billedInAdvance = newSubscriptionBulkPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBulkPrice.invoiceGroupingKey + cadence = newSubscriptionBulkPrice.cadence + billingCycleConfiguration = newSubscriptionBulkPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkPrice.conversionRate - this.modelType = newSubscriptionBulkPrice.modelType - this.bulkConfig = newSubscriptionBulkPrice.bulkConfig - this.currency = newSubscriptionBulkPrice.currency - this.referenceId = newSubscriptionBulkPrice.referenceId - additionalProperties(newSubscriptionBulkPrice.additionalProperties) + conversionRate = newSubscriptionBulkPrice.conversionRate + modelType = newSubscriptionBulkPrice.modelType + bulkConfig = newSubscriptionBulkPrice.bulkConfig + currency = newSubscriptionBulkPrice.currency + referenceId = newSubscriptionBulkPrice.referenceId + additionalProperties = + newSubscriptionBulkPrice.additionalProperties.toMutableMap() } /** @@ -39240,75 +31455,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -39316,37 +31488,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -39354,16 +31506,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -39372,87 +31514,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkConfig(bulkConfig: BulkConfig) = bulkConfig(JsonField.of(bulkConfig)) - - @JsonProperty("bulk_config") - @ExcludeMissing - fun bulkConfig(bulkConfig: JsonField) = apply { - this.bulkConfig = bulkConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun bulkConfig(bulkConfig: BulkConfig) = apply { this.bulkConfig = bulkConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -39460,55 +31553,52 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkPrice = NewSubscriptionBulkPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkConfig) { "`bulkConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkConfig.Builder::class) @NoAutoDetect class BulkConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Bulk tiers for rating based on total usage volume */ - fun tiers(): List = tiers.getRequired("tiers") - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -39518,84 +31608,71 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkConfig: BulkConfig) = apply { - this.tiers = bulkConfig.tiers - additionalProperties(bulkConfig.additionalProperties) + tiers = bulkConfig.tiers.toMutableList() + additionalProperties = bulkConfig.additionalProperties.toMutableMap() } /** Bulk tiers for rating based on total usage volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkConfig = BulkConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumUnits: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_units") private val maximumUnits: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for this tier */ - fun maximumUnits(): Optional = - Optional.ofNullable(maximumUnits.getNullable("maximum_units")) - - /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Upper bound for this tier */ @JsonProperty("maximum_units") - @ExcludeMissing - fun _maximumUnits() = maximumUnits + fun maximumUnits(): Optional = Optional.ofNullable(maximumUnits) /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumUnits() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -39605,59 +31682,56 @@ constructor( class Builder { - private var maximumUnits: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var maximumUnits: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumUnits = tier.maximumUnits - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + maximumUnits = tier.maximumUnits + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for this tier */ - fun maximumUnits(maximumUnits: Double) = - maximumUnits(JsonField.of(maximumUnits)) - - /** Upper bound for this tier */ - @JsonProperty("maximum_units") - @ExcludeMissing - fun maximumUnits(maximumUnits: JsonField) = apply { + fun maximumUnits(maximumUnits: Double) = apply { this.maximumUnits = maximumUnits } /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumUnits, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -39836,43 +31910,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -39882,57 +31939,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -40018,43 +32074,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -40064,8 +32103,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -40073,49 +32112,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -40202,25 +32240,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -40235,24 +32266,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -40291,233 +32329,123 @@ constructor( "NewSubscriptionBulkPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkConfig=$bulkConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionThresholdTotalAmountPrice.Builder::class) @NoAutoDetect class NewSubscriptionThresholdTotalAmountPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val thresholdTotalAmountConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("threshold_total_amount_config") + private val thresholdTotalAmountConfig: ThresholdTotalAmountConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = - thresholdTotalAmountConfig.getRequired("threshold_total_amount_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun _thresholdTotalAmountConfig() = thresholdTotalAmountConfig + fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = + thresholdTotalAmountConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionThresholdTotalAmountPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - thresholdTotalAmountConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -40527,26 +32455,22 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var thresholdTotalAmountConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var thresholdTotalAmountConfig: ThresholdTotalAmountConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -40554,34 +32478,30 @@ constructor( newSubscriptionThresholdTotalAmountPrice: NewSubscriptionThresholdTotalAmountPrice ) = apply { - this.metadata = newSubscriptionThresholdTotalAmountPrice.metadata - this.externalPriceId = - newSubscriptionThresholdTotalAmountPrice.externalPriceId - this.name = newSubscriptionThresholdTotalAmountPrice.name - this.billableMetricId = - newSubscriptionThresholdTotalAmountPrice.billableMetricId - this.itemId = newSubscriptionThresholdTotalAmountPrice.itemId - this.billedInAdvance = - newSubscriptionThresholdTotalAmountPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionThresholdTotalAmountPrice.metadata + externalPriceId = newSubscriptionThresholdTotalAmountPrice.externalPriceId + name = newSubscriptionThresholdTotalAmountPrice.name + billableMetricId = newSubscriptionThresholdTotalAmountPrice.billableMetricId + itemId = newSubscriptionThresholdTotalAmountPrice.itemId + billedInAdvance = newSubscriptionThresholdTotalAmountPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionThresholdTotalAmountPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionThresholdTotalAmountPrice.invoiceGroupingKey - this.cadence = newSubscriptionThresholdTotalAmountPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionThresholdTotalAmountPrice.cadence + billingCycleConfiguration = newSubscriptionThresholdTotalAmountPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionThresholdTotalAmountPrice.invoicingCycleConfiguration - this.conversionRate = - newSubscriptionThresholdTotalAmountPrice.conversionRate - this.modelType = newSubscriptionThresholdTotalAmountPrice.modelType - this.thresholdTotalAmountConfig = + conversionRate = newSubscriptionThresholdTotalAmountPrice.conversionRate + modelType = newSubscriptionThresholdTotalAmountPrice.modelType + thresholdTotalAmountConfig = newSubscriptionThresholdTotalAmountPrice.thresholdTotalAmountConfig - this.currency = newSubscriptionThresholdTotalAmountPrice.currency - this.referenceId = newSubscriptionThresholdTotalAmountPrice.referenceId - additionalProperties( + currency = newSubscriptionThresholdTotalAmountPrice.currency + referenceId = newSubscriptionThresholdTotalAmountPrice.referenceId + additionalProperties = newSubscriptionThresholdTotalAmountPrice.additionalProperties - ) + .toMutableMap() } /** @@ -40589,75 +32509,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -40665,37 +32542,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -40703,16 +32560,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -40721,89 +32568,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun thresholdTotalAmountConfig( thresholdTotalAmountConfig: ThresholdTotalAmountConfig - ) = thresholdTotalAmountConfig(JsonField.of(thresholdTotalAmountConfig)) - - @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun thresholdTotalAmountConfig( - thresholdTotalAmountConfig: JsonField ) = apply { this.thresholdTotalAmountConfig = thresholdTotalAmountConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -40811,22 +32609,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionThresholdTotalAmountPrice = NewSubscriptionThresholdTotalAmountPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - thresholdTotalAmountConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(thresholdTotalAmountConfig) { + "`thresholdTotalAmountConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -40967,25 +32775,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ThresholdTotalAmountConfig.Builder::class) @NoAutoDetect class ThresholdTotalAmountConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): ThresholdTotalAmountConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -41001,26 +32802,32 @@ constructor( @JvmSynthetic internal fun from(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = apply { - additionalProperties( - thresholdTotalAmountConfig.additionalProperties - ) + additionalProperties = + thresholdTotalAmountConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ThresholdTotalAmountConfig = ThresholdTotalAmountConfig(additionalProperties.toImmutable()) } @@ -41047,43 +32854,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -41093,57 +32883,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -41229,43 +33018,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -41275,8 +33047,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -41284,49 +33056,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -41413,25 +33184,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -41446,24 +33210,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -41502,233 +33273,122 @@ constructor( "NewSubscriptionThresholdTotalAmountPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, thresholdTotalAmountConfig=$thresholdTotalAmountConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredPackagePrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredPackageConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_package_config") + private val tieredPackageConfig: TieredPackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredPackageConfig(): TieredPackageConfig = - tieredPackageConfig.getRequired("tiered_package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_package_config") - @ExcludeMissing - fun _tieredPackageConfig() = tieredPackageConfig + fun tieredPackageConfig(): TieredPackageConfig = tieredPackageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredPackageConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -41738,54 +33398,48 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredPackageConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredPackageConfig: TieredPackageConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredPackagePrice: NewSubscriptionTieredPackagePrice ) = apply { - this.metadata = newSubscriptionTieredPackagePrice.metadata - this.externalPriceId = newSubscriptionTieredPackagePrice.externalPriceId - this.name = newSubscriptionTieredPackagePrice.name - this.billableMetricId = newSubscriptionTieredPackagePrice.billableMetricId - this.itemId = newSubscriptionTieredPackagePrice.itemId - this.billedInAdvance = newSubscriptionTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = - newSubscriptionTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = - newSubscriptionTieredPackagePrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredPackagePrice.metadata + externalPriceId = newSubscriptionTieredPackagePrice.externalPriceId + name = newSubscriptionTieredPackagePrice.name + billableMetricId = newSubscriptionTieredPackagePrice.billableMetricId + itemId = newSubscriptionTieredPackagePrice.itemId + billedInAdvance = newSubscriptionTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredPackagePrice.invoiceGroupingKey + cadence = newSubscriptionTieredPackagePrice.cadence + billingCycleConfiguration = newSubscriptionTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredPackagePrice.conversionRate - this.modelType = newSubscriptionTieredPackagePrice.modelType - this.tieredPackageConfig = - newSubscriptionTieredPackagePrice.tieredPackageConfig - this.currency = newSubscriptionTieredPackagePrice.currency - this.referenceId = newSubscriptionTieredPackagePrice.referenceId - additionalProperties(newSubscriptionTieredPackagePrice.additionalProperties) + conversionRate = newSubscriptionTieredPackagePrice.conversionRate + modelType = newSubscriptionTieredPackagePrice.modelType + tieredPackageConfig = newSubscriptionTieredPackagePrice.tieredPackageConfig + currency = newSubscriptionTieredPackagePrice.currency + referenceId = newSubscriptionTieredPackagePrice.referenceId + additionalProperties = + newSubscriptionTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -41793,75 +33447,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -41869,37 +33480,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -41907,16 +33498,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -41925,89 +33506,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType + fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = apply { + this.tieredPackageConfig = tieredPackageConfig } - fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = - tieredPackageConfig(JsonField.of(tieredPackageConfig)) - - @JsonProperty("tiered_package_config") - @ExcludeMissing - fun tieredPackageConfig(tieredPackageConfig: JsonField) = - apply { - this.tieredPackageConfig = tieredPackageConfig - } - /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -42015,22 +33547,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredPackagePrice = NewSubscriptionTieredPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredPackageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredPackageConfig) { + "`tieredPackageConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -42171,25 +33713,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageConfig.Builder::class) @NoAutoDetect class TieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredPackageConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42204,24 +33739,32 @@ constructor( @JvmSynthetic internal fun from(tieredPackageConfig: TieredPackageConfig) = apply { - additionalProperties(tieredPackageConfig.additionalProperties) + additionalProperties = + tieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageConfig = TieredPackageConfig(additionalProperties.toImmutable()) } @@ -42248,43 +33791,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42294,57 +33820,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -42430,43 +33955,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42476,8 +33984,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -42485,49 +33993,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -42614,25 +34121,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42647,24 +34147,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -42703,233 +34210,122 @@ constructor( "NewSubscriptionTieredPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredPackageConfig=$tieredPackageConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredWithMinimumPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredWithMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithMinimumConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_minimum_config") + private val tieredWithMinimumConfig: TieredWithMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithMinimumConfig(): TieredWithMinimumConfig = - tieredWithMinimumConfig.getRequired("tiered_with_minimum_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun _tieredWithMinimumConfig() = tieredWithMinimumConfig + fun tieredWithMinimumConfig(): TieredWithMinimumConfig = tieredWithMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredWithMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithMinimumConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42939,57 +34335,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithMinimumConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithMinimumConfig: TieredWithMinimumConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredWithMinimumPrice: NewSubscriptionTieredWithMinimumPrice ) = apply { - this.metadata = newSubscriptionTieredWithMinimumPrice.metadata - this.externalPriceId = newSubscriptionTieredWithMinimumPrice.externalPriceId - this.name = newSubscriptionTieredWithMinimumPrice.name - this.billableMetricId = - newSubscriptionTieredWithMinimumPrice.billableMetricId - this.itemId = newSubscriptionTieredWithMinimumPrice.itemId - this.billedInAdvance = newSubscriptionTieredWithMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionTieredWithMinimumPrice.metadata + externalPriceId = newSubscriptionTieredWithMinimumPrice.externalPriceId + name = newSubscriptionTieredWithMinimumPrice.name + billableMetricId = newSubscriptionTieredWithMinimumPrice.billableMetricId + itemId = newSubscriptionTieredWithMinimumPrice.itemId + billedInAdvance = newSubscriptionTieredWithMinimumPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredWithMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionTieredWithMinimumPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredWithMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionTieredWithMinimumPrice.cadence + billingCycleConfiguration = newSubscriptionTieredWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredWithMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredWithMinimumPrice.conversionRate - this.modelType = newSubscriptionTieredWithMinimumPrice.modelType - this.tieredWithMinimumConfig = + conversionRate = newSubscriptionTieredWithMinimumPrice.conversionRate + modelType = newSubscriptionTieredWithMinimumPrice.modelType + tieredWithMinimumConfig = newSubscriptionTieredWithMinimumPrice.tieredWithMinimumConfig - this.currency = newSubscriptionTieredWithMinimumPrice.currency - this.referenceId = newSubscriptionTieredWithMinimumPrice.referenceId - additionalProperties( + currency = newSubscriptionTieredWithMinimumPrice.currency + referenceId = newSubscriptionTieredWithMinimumPrice.referenceId + additionalProperties = newSubscriptionTieredWithMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -42997,75 +34388,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -43073,37 +34421,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -43111,16 +34439,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -43129,88 +34447,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithMinimumConfig(tieredWithMinimumConfig: TieredWithMinimumConfig) = - tieredWithMinimumConfig(JsonField.of(tieredWithMinimumConfig)) - - @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun tieredWithMinimumConfig( - tieredWithMinimumConfig: JsonField - ) = apply { this.tieredWithMinimumConfig = tieredWithMinimumConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.tieredWithMinimumConfig = tieredWithMinimumConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -43218,22 +34489,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredWithMinimumPrice = NewSubscriptionTieredWithMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithMinimumConfig) { + "`tieredWithMinimumConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -43374,25 +34655,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithMinimumConfig.Builder::class) @NoAutoDetect class TieredWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -43408,24 +34682,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithMinimumConfig: TieredWithMinimumConfig) = apply { - additionalProperties(tieredWithMinimumConfig.additionalProperties) + additionalProperties = + tieredWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithMinimumConfig = TieredWithMinimumConfig(additionalProperties.toImmutable()) } @@ -43452,43 +34734,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -43498,57 +34763,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -43634,43 +34898,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -43680,8 +34927,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -43689,49 +34936,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -43818,25 +35064,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -43851,24 +35090,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -43907,233 +35153,122 @@ constructor( "NewSubscriptionTieredWithMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithMinimumConfig=$tieredWithMinimumConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionUnitWithPercentPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitWithPercentPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithPercentConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_percent_config") + private val unitWithPercentConfig: UnitWithPercentConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithPercentConfig(): UnitWithPercentConfig = - unitWithPercentConfig.getRequired("unit_with_percent_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun _unitWithPercentConfig() = unitWithPercentConfig + fun unitWithPercentConfig(): UnitWithPercentConfig = unitWithPercentConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitWithPercentPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithPercentConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -44143,56 +35278,49 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithPercentConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithPercentConfig: UnitWithPercentConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionUnitWithPercentPrice: NewSubscriptionUnitWithPercentPrice ) = apply { - this.metadata = newSubscriptionUnitWithPercentPrice.metadata - this.externalPriceId = newSubscriptionUnitWithPercentPrice.externalPriceId - this.name = newSubscriptionUnitWithPercentPrice.name - this.billableMetricId = newSubscriptionUnitWithPercentPrice.billableMetricId - this.itemId = newSubscriptionUnitWithPercentPrice.itemId - this.billedInAdvance = newSubscriptionUnitWithPercentPrice.billedInAdvance - this.fixedPriceQuantity = - newSubscriptionUnitWithPercentPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newSubscriptionUnitWithPercentPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitWithPercentPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionUnitWithPercentPrice.metadata + externalPriceId = newSubscriptionUnitWithPercentPrice.externalPriceId + name = newSubscriptionUnitWithPercentPrice.name + billableMetricId = newSubscriptionUnitWithPercentPrice.billableMetricId + itemId = newSubscriptionUnitWithPercentPrice.itemId + billedInAdvance = newSubscriptionUnitWithPercentPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitWithPercentPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionUnitWithPercentPrice.invoiceGroupingKey + cadence = newSubscriptionUnitWithPercentPrice.cadence + billingCycleConfiguration = newSubscriptionUnitWithPercentPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitWithPercentPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitWithPercentPrice.conversionRate - this.modelType = newSubscriptionUnitWithPercentPrice.modelType - this.unitWithPercentConfig = + conversionRate = newSubscriptionUnitWithPercentPrice.conversionRate + modelType = newSubscriptionUnitWithPercentPrice.modelType + unitWithPercentConfig = newSubscriptionUnitWithPercentPrice.unitWithPercentConfig - this.currency = newSubscriptionUnitWithPercentPrice.currency - this.referenceId = newSubscriptionUnitWithPercentPrice.referenceId - additionalProperties( - newSubscriptionUnitWithPercentPrice.additionalProperties - ) + currency = newSubscriptionUnitWithPercentPrice.currency + referenceId = newSubscriptionUnitWithPercentPrice.referenceId + additionalProperties = + newSubscriptionUnitWithPercentPrice.additionalProperties.toMutableMap() } /** @@ -44200,75 +35328,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -44276,37 +35361,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -44314,16 +35379,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -44332,88 +35387,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithPercentConfig(unitWithPercentConfig: UnitWithPercentConfig) = - unitWithPercentConfig(JsonField.of(unitWithPercentConfig)) - - @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun unitWithPercentConfig( - unitWithPercentConfig: JsonField - ) = apply { this.unitWithPercentConfig = unitWithPercentConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithPercentConfig = unitWithPercentConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -44421,22 +35429,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitWithPercentPrice = NewSubscriptionUnitWithPercentPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithPercentConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithPercentConfig) { + "`unitWithPercentConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -44577,25 +35595,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithPercentConfig.Builder::class) @NoAutoDetect class UnitWithPercentConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithPercentConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -44610,24 +35621,32 @@ constructor( @JvmSynthetic internal fun from(unitWithPercentConfig: UnitWithPercentConfig) = apply { - additionalProperties(unitWithPercentConfig.additionalProperties) + additionalProperties = + unitWithPercentConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithPercentConfig = UnitWithPercentConfig(additionalProperties.toImmutable()) } @@ -44654,43 +35673,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -44700,57 +35702,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -44836,43 +35837,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -44882,8 +35866,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -44891,49 +35875,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -45020,25 +36003,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -45053,24 +36029,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -45109,233 +36092,123 @@ constructor( "NewSubscriptionUnitWithPercentPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithPercentConfig=$unitWithPercentConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionPackageWithAllocationPrice.Builder::class) @NoAutoDetect class NewSubscriptionPackageWithAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageWithAllocationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_with_allocation_config") + private val packageWithAllocationConfig: PackageWithAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageWithAllocationConfig(): PackageWithAllocationConfig = - packageWithAllocationConfig.getRequired("package_with_allocation_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun _packageWithAllocationConfig() = packageWithAllocationConfig + fun packageWithAllocationConfig(): PackageWithAllocationConfig = + packageWithAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionPackageWithAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageWithAllocationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -45345,27 +36218,22 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageWithAllocationConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageWithAllocationConfig: PackageWithAllocationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -45373,34 +36241,31 @@ constructor( newSubscriptionPackageWithAllocationPrice: NewSubscriptionPackageWithAllocationPrice ) = apply { - this.metadata = newSubscriptionPackageWithAllocationPrice.metadata - this.externalPriceId = - newSubscriptionPackageWithAllocationPrice.externalPriceId - this.name = newSubscriptionPackageWithAllocationPrice.name - this.billableMetricId = + metadata = newSubscriptionPackageWithAllocationPrice.metadata + externalPriceId = newSubscriptionPackageWithAllocationPrice.externalPriceId + name = newSubscriptionPackageWithAllocationPrice.name + billableMetricId = newSubscriptionPackageWithAllocationPrice.billableMetricId - this.itemId = newSubscriptionPackageWithAllocationPrice.itemId - this.billedInAdvance = - newSubscriptionPackageWithAllocationPrice.billedInAdvance - this.fixedPriceQuantity = + itemId = newSubscriptionPackageWithAllocationPrice.itemId + billedInAdvance = newSubscriptionPackageWithAllocationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionPackageWithAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionPackageWithAllocationPrice.invoiceGroupingKey - this.cadence = newSubscriptionPackageWithAllocationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionPackageWithAllocationPrice.cadence + billingCycleConfiguration = newSubscriptionPackageWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionPackageWithAllocationPrice.invoicingCycleConfiguration - this.conversionRate = - newSubscriptionPackageWithAllocationPrice.conversionRate - this.modelType = newSubscriptionPackageWithAllocationPrice.modelType - this.packageWithAllocationConfig = + conversionRate = newSubscriptionPackageWithAllocationPrice.conversionRate + modelType = newSubscriptionPackageWithAllocationPrice.modelType + packageWithAllocationConfig = newSubscriptionPackageWithAllocationPrice.packageWithAllocationConfig - this.currency = newSubscriptionPackageWithAllocationPrice.currency - this.referenceId = newSubscriptionPackageWithAllocationPrice.referenceId - additionalProperties( + currency = newSubscriptionPackageWithAllocationPrice.currency + referenceId = newSubscriptionPackageWithAllocationPrice.referenceId + additionalProperties = newSubscriptionPackageWithAllocationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -45408,75 +36273,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -45484,37 +36306,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -45522,16 +36324,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -45540,89 +36332,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun packageWithAllocationConfig( packageWithAllocationConfig: PackageWithAllocationConfig - ) = packageWithAllocationConfig(JsonField.of(packageWithAllocationConfig)) - - @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun packageWithAllocationConfig( - packageWithAllocationConfig: JsonField ) = apply { this.packageWithAllocationConfig = packageWithAllocationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -45630,22 +36373,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionPackageWithAllocationPrice = NewSubscriptionPackageWithAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageWithAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageWithAllocationConfig) { + "`packageWithAllocationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -45786,25 +36539,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageWithAllocationConfig.Builder::class) @NoAutoDetect class PackageWithAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageWithAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -45821,24 +36567,32 @@ constructor( internal fun from( packageWithAllocationConfig: PackageWithAllocationConfig ) = apply { - additionalProperties(packageWithAllocationConfig.additionalProperties) + additionalProperties = + packageWithAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageWithAllocationConfig = PackageWithAllocationConfig(additionalProperties.toImmutable()) } @@ -45865,43 +36619,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -45911,57 +36648,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -46047,43 +36783,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -46093,8 +36812,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -46102,49 +36821,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -46231,25 +36949,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -46264,24 +36975,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -46320,233 +37038,123 @@ constructor( "NewSubscriptionPackageWithAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageWithAllocationConfig=$packageWithAllocationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTierWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionTierWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_proration_config") + private val tieredWithProrationConfig: TieredWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithProrationConfig(): TieredWithProrationConfig = - tieredWithProrationConfig.getRequired("tiered_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun _tieredWithProrationConfig() = tieredWithProrationConfig + fun tieredWithProrationConfig(): TieredWithProrationConfig = + tieredWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTierWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -46556,57 +37164,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithProrationConfig: TieredWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTierWithProrationPrice: NewSubscriptionTierWithProrationPrice ) = apply { - this.metadata = newSubscriptionTierWithProrationPrice.metadata - this.externalPriceId = newSubscriptionTierWithProrationPrice.externalPriceId - this.name = newSubscriptionTierWithProrationPrice.name - this.billableMetricId = - newSubscriptionTierWithProrationPrice.billableMetricId - this.itemId = newSubscriptionTierWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionTierWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionTierWithProrationPrice.metadata + externalPriceId = newSubscriptionTierWithProrationPrice.externalPriceId + name = newSubscriptionTierWithProrationPrice.name + billableMetricId = newSubscriptionTierWithProrationPrice.billableMetricId + itemId = newSubscriptionTierWithProrationPrice.itemId + billedInAdvance = newSubscriptionTierWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTierWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionTierWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionTierWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionTierWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionTierWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTierWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTierWithProrationPrice.conversionRate - this.modelType = newSubscriptionTierWithProrationPrice.modelType - this.tieredWithProrationConfig = + conversionRate = newSubscriptionTierWithProrationPrice.conversionRate + modelType = newSubscriptionTierWithProrationPrice.modelType + tieredWithProrationConfig = newSubscriptionTierWithProrationPrice.tieredWithProrationConfig - this.currency = newSubscriptionTierWithProrationPrice.currency - this.referenceId = newSubscriptionTierWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionTierWithProrationPrice.currency + referenceId = newSubscriptionTierWithProrationPrice.referenceId + additionalProperties = newSubscriptionTierWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -46614,75 +37217,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -46690,37 +37250,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -46728,16 +37268,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -46746,89 +37276,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithProrationConfig( tieredWithProrationConfig: TieredWithProrationConfig - ) = tieredWithProrationConfig(JsonField.of(tieredWithProrationConfig)) - - @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun tieredWithProrationConfig( - tieredWithProrationConfig: JsonField ) = apply { this.tieredWithProrationConfig = tieredWithProrationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -46836,22 +37317,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTierWithProrationPrice = NewSubscriptionTierWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithProrationConfig) { + "`tieredWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -46992,25 +37483,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithProrationConfig.Builder::class) @NoAutoDetect class TieredWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -47026,24 +37510,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithProrationConfig: TieredWithProrationConfig) = apply { - additionalProperties(tieredWithProrationConfig.additionalProperties) + additionalProperties = + tieredWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithProrationConfig = TieredWithProrationConfig(additionalProperties.toImmutable()) } @@ -47070,43 +37562,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -47116,57 +37591,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -47252,43 +37726,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -47298,8 +37755,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -47307,49 +37764,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -47436,25 +37892,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -47469,24 +37918,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -47525,233 +37981,122 @@ constructor( "NewSubscriptionTierWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithProrationConfig=$tieredWithProrationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionUnitWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_proration_config") + private val unitWithProrationConfig: UnitWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithProrationConfig(): UnitWithProrationConfig = - unitWithProrationConfig.getRequired("unit_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun _unitWithProrationConfig() = unitWithProrationConfig + fun unitWithProrationConfig(): UnitWithProrationConfig = unitWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -47761,57 +38106,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithProrationConfig: UnitWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionUnitWithProrationPrice: NewSubscriptionUnitWithProrationPrice ) = apply { - this.metadata = newSubscriptionUnitWithProrationPrice.metadata - this.externalPriceId = newSubscriptionUnitWithProrationPrice.externalPriceId - this.name = newSubscriptionUnitWithProrationPrice.name - this.billableMetricId = - newSubscriptionUnitWithProrationPrice.billableMetricId - this.itemId = newSubscriptionUnitWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionUnitWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionUnitWithProrationPrice.metadata + externalPriceId = newSubscriptionUnitWithProrationPrice.externalPriceId + name = newSubscriptionUnitWithProrationPrice.name + billableMetricId = newSubscriptionUnitWithProrationPrice.billableMetricId + itemId = newSubscriptionUnitWithProrationPrice.itemId + billedInAdvance = newSubscriptionUnitWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionUnitWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionUnitWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionUnitWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitWithProrationPrice.conversionRate - this.modelType = newSubscriptionUnitWithProrationPrice.modelType - this.unitWithProrationConfig = + conversionRate = newSubscriptionUnitWithProrationPrice.conversionRate + modelType = newSubscriptionUnitWithProrationPrice.modelType + unitWithProrationConfig = newSubscriptionUnitWithProrationPrice.unitWithProrationConfig - this.currency = newSubscriptionUnitWithProrationPrice.currency - this.referenceId = newSubscriptionUnitWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionUnitWithProrationPrice.currency + referenceId = newSubscriptionUnitWithProrationPrice.referenceId + additionalProperties = newSubscriptionUnitWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -47819,75 +38159,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -47895,37 +38192,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -47933,16 +38210,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -47951,88 +38218,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithProrationConfig(unitWithProrationConfig: UnitWithProrationConfig) = - unitWithProrationConfig(JsonField.of(unitWithProrationConfig)) - - @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun unitWithProrationConfig( - unitWithProrationConfig: JsonField - ) = apply { this.unitWithProrationConfig = unitWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithProrationConfig = unitWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -48040,22 +38260,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitWithProrationPrice = NewSubscriptionUnitWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithProrationConfig) { + "`unitWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -48196,25 +38426,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithProrationConfig.Builder::class) @NoAutoDetect class UnitWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48230,24 +38453,32 @@ constructor( @JvmSynthetic internal fun from(unitWithProrationConfig: UnitWithProrationConfig) = apply { - additionalProperties(unitWithProrationConfig.additionalProperties) + additionalProperties = + unitWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithProrationConfig = UnitWithProrationConfig(additionalProperties.toImmutable()) } @@ -48274,43 +38505,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48320,57 +38534,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -48456,43 +38669,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48502,8 +38698,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -48511,49 +38707,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -48640,25 +38835,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48673,24 +38861,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -48729,233 +38924,122 @@ constructor( "NewSubscriptionUnitWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithProrationConfig=$unitWithProrationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionGroupedAllocationPrice.Builder::class) @NoAutoDetect class NewSubscriptionGroupedAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedAllocationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_allocation_config") + private val groupedAllocationConfig: GroupedAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedAllocationConfig(): GroupedAllocationConfig = - groupedAllocationConfig.getRequired("grouped_allocation_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun _groupedAllocationConfig() = groupedAllocationConfig + fun groupedAllocationConfig(): GroupedAllocationConfig = groupedAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionGroupedAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedAllocationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48965,57 +39049,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedAllocationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedAllocationConfig: GroupedAllocationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionGroupedAllocationPrice: NewSubscriptionGroupedAllocationPrice ) = apply { - this.metadata = newSubscriptionGroupedAllocationPrice.metadata - this.externalPriceId = newSubscriptionGroupedAllocationPrice.externalPriceId - this.name = newSubscriptionGroupedAllocationPrice.name - this.billableMetricId = - newSubscriptionGroupedAllocationPrice.billableMetricId - this.itemId = newSubscriptionGroupedAllocationPrice.itemId - this.billedInAdvance = newSubscriptionGroupedAllocationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionGroupedAllocationPrice.metadata + externalPriceId = newSubscriptionGroupedAllocationPrice.externalPriceId + name = newSubscriptionGroupedAllocationPrice.name + billableMetricId = newSubscriptionGroupedAllocationPrice.billableMetricId + itemId = newSubscriptionGroupedAllocationPrice.itemId + billedInAdvance = newSubscriptionGroupedAllocationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionGroupedAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionGroupedAllocationPrice.invoiceGroupingKey - this.cadence = newSubscriptionGroupedAllocationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionGroupedAllocationPrice.cadence + billingCycleConfiguration = newSubscriptionGroupedAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionGroupedAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionGroupedAllocationPrice.conversionRate - this.modelType = newSubscriptionGroupedAllocationPrice.modelType - this.groupedAllocationConfig = + conversionRate = newSubscriptionGroupedAllocationPrice.conversionRate + modelType = newSubscriptionGroupedAllocationPrice.modelType + groupedAllocationConfig = newSubscriptionGroupedAllocationPrice.groupedAllocationConfig - this.currency = newSubscriptionGroupedAllocationPrice.currency - this.referenceId = newSubscriptionGroupedAllocationPrice.referenceId - additionalProperties( + currency = newSubscriptionGroupedAllocationPrice.currency + referenceId = newSubscriptionGroupedAllocationPrice.referenceId + additionalProperties = newSubscriptionGroupedAllocationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -49023,75 +39102,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -49099,37 +39135,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -49137,16 +39153,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -49155,88 +39161,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedAllocationConfig(groupedAllocationConfig: GroupedAllocationConfig) = - groupedAllocationConfig(JsonField.of(groupedAllocationConfig)) - - @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun groupedAllocationConfig( - groupedAllocationConfig: JsonField - ) = apply { this.groupedAllocationConfig = groupedAllocationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.groupedAllocationConfig = groupedAllocationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -49244,22 +39203,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionGroupedAllocationPrice = NewSubscriptionGroupedAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedAllocationConfig) { + "`groupedAllocationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -49348,25 +39317,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedAllocationConfig.Builder::class) @NoAutoDetect class GroupedAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -49382,24 +39344,32 @@ constructor( @JvmSynthetic internal fun from(groupedAllocationConfig: GroupedAllocationConfig) = apply { - additionalProperties(groupedAllocationConfig.additionalProperties) + additionalProperties = + groupedAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedAllocationConfig = GroupedAllocationConfig(additionalProperties.toImmutable()) } @@ -49478,43 +39448,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -49524,57 +39477,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -49660,43 +39612,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -49706,8 +39641,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -49715,49 +39650,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -49844,25 +39778,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -49877,24 +39804,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -49933,238 +39867,123 @@ constructor( "NewSubscriptionGroupedAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedAllocationConfig=$groupedAllocationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize( - builder = NewSubscriptionGroupedWithProratedMinimumPrice.Builder::class - ) @NoAutoDetect class NewSubscriptionGroupedWithProratedMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedWithProratedMinimumConfig: - JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_prorated_minimum_config") + private val groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = - groupedWithProratedMinimumConfig.getRequired( - "grouped_with_prorated_minimum_config" - ) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun _groupedWithProratedMinimumConfig() = groupedWithProratedMinimumConfig + fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = + groupedWithProratedMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionGroupedWithProratedMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedWithProratedMinimumConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -50174,27 +39993,24 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null private var groupedWithProratedMinimumConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + GroupedWithProratedMinimumConfig? = + null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -50202,37 +40018,36 @@ constructor( newSubscriptionGroupedWithProratedMinimumPrice: NewSubscriptionGroupedWithProratedMinimumPrice ) = apply { - this.metadata = newSubscriptionGroupedWithProratedMinimumPrice.metadata - this.externalPriceId = + metadata = newSubscriptionGroupedWithProratedMinimumPrice.metadata + externalPriceId = newSubscriptionGroupedWithProratedMinimumPrice.externalPriceId - this.name = newSubscriptionGroupedWithProratedMinimumPrice.name - this.billableMetricId = + name = newSubscriptionGroupedWithProratedMinimumPrice.name + billableMetricId = newSubscriptionGroupedWithProratedMinimumPrice.billableMetricId - this.itemId = newSubscriptionGroupedWithProratedMinimumPrice.itemId - this.billedInAdvance = + itemId = newSubscriptionGroupedWithProratedMinimumPrice.itemId + billedInAdvance = newSubscriptionGroupedWithProratedMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + fixedPriceQuantity = newSubscriptionGroupedWithProratedMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionGroupedWithProratedMinimumPrice.invoiceGroupingKey - this.cadence = newSubscriptionGroupedWithProratedMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionGroupedWithProratedMinimumPrice.cadence + billingCycleConfiguration = newSubscriptionGroupedWithProratedMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionGroupedWithProratedMinimumPrice .invoicingCycleConfiguration - this.conversionRate = + conversionRate = newSubscriptionGroupedWithProratedMinimumPrice.conversionRate - this.modelType = newSubscriptionGroupedWithProratedMinimumPrice.modelType - this.groupedWithProratedMinimumConfig = + modelType = newSubscriptionGroupedWithProratedMinimumPrice.modelType + groupedWithProratedMinimumConfig = newSubscriptionGroupedWithProratedMinimumPrice .groupedWithProratedMinimumConfig - this.currency = newSubscriptionGroupedWithProratedMinimumPrice.currency - this.referenceId = - newSubscriptionGroupedWithProratedMinimumPrice.referenceId - additionalProperties( + currency = newSubscriptionGroupedWithProratedMinimumPrice.currency + referenceId = newSubscriptionGroupedWithProratedMinimumPrice.referenceId + additionalProperties = newSubscriptionGroupedWithProratedMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -50240,75 +40055,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -50316,37 +40088,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -50354,16 +40106,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -50372,53 +40114,19 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedWithProratedMinimumConfig( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig - ) = - groupedWithProratedMinimumConfig( - JsonField.of(groupedWithProratedMinimumConfig) - ) - - @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun groupedWithProratedMinimumConfig( - groupedWithProratedMinimumConfig: - JsonField ) = apply { this.groupedWithProratedMinimumConfig = groupedWithProratedMinimumConfig } @@ -50427,40 +40135,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -50468,22 +40157,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionGroupedWithProratedMinimumPrice = NewSubscriptionGroupedWithProratedMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedWithProratedMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedWithProratedMinimumConfig) { + "`groupedWithProratedMinimumConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -50572,25 +40271,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithProratedMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithProratedMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedWithProratedMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -50607,26 +40299,32 @@ constructor( internal fun from( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = apply { - additionalProperties( - groupedWithProratedMinimumConfig.additionalProperties - ) + additionalProperties = + groupedWithProratedMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithProratedMinimumConfig = GroupedWithProratedMinimumConfig(additionalProperties.toImmutable()) } @@ -50706,43 +40404,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -50752,57 +40433,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -50888,43 +40568,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -50934,8 +40597,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -50943,49 +40606,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -51072,25 +40734,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -51105,24 +40760,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -51161,233 +40823,122 @@ constructor( "NewSubscriptionGroupedWithProratedMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithProratedMinimumConfig=$groupedWithProratedMinimumConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_with_proration_config") + private val bulkWithProrationConfig: BulkWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkWithProrationConfig(): BulkWithProrationConfig = - bulkWithProrationConfig.getRequired("bulk_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun _bulkWithProrationConfig() = bulkWithProrationConfig + fun bulkWithProrationConfig(): BulkWithProrationConfig = bulkWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -51397,57 +40948,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkWithProrationConfig: BulkWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionBulkWithProrationPrice: NewSubscriptionBulkWithProrationPrice ) = apply { - this.metadata = newSubscriptionBulkWithProrationPrice.metadata - this.externalPriceId = newSubscriptionBulkWithProrationPrice.externalPriceId - this.name = newSubscriptionBulkWithProrationPrice.name - this.billableMetricId = - newSubscriptionBulkWithProrationPrice.billableMetricId - this.itemId = newSubscriptionBulkWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionBulkWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionBulkWithProrationPrice.metadata + externalPriceId = newSubscriptionBulkWithProrationPrice.externalPriceId + name = newSubscriptionBulkWithProrationPrice.name + billableMetricId = newSubscriptionBulkWithProrationPrice.billableMetricId + itemId = newSubscriptionBulkWithProrationPrice.itemId + billedInAdvance = newSubscriptionBulkWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionBulkWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionBulkWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionBulkWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkWithProrationPrice.conversionRate - this.modelType = newSubscriptionBulkWithProrationPrice.modelType - this.bulkWithProrationConfig = + conversionRate = newSubscriptionBulkWithProrationPrice.conversionRate + modelType = newSubscriptionBulkWithProrationPrice.modelType + bulkWithProrationConfig = newSubscriptionBulkWithProrationPrice.bulkWithProrationConfig - this.currency = newSubscriptionBulkWithProrationPrice.currency - this.referenceId = newSubscriptionBulkWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionBulkWithProrationPrice.currency + referenceId = newSubscriptionBulkWithProrationPrice.referenceId + additionalProperties = newSubscriptionBulkWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -51455,75 +41001,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -51531,37 +41034,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -51569,16 +41052,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -51587,88 +41060,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun bulkWithProrationConfig(bulkWithProrationConfig: BulkWithProrationConfig) = - bulkWithProrationConfig(JsonField.of(bulkWithProrationConfig)) - - @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun bulkWithProrationConfig( - bulkWithProrationConfig: JsonField - ) = apply { this.bulkWithProrationConfig = bulkWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.bulkWithProrationConfig = bulkWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -51676,47 +41102,50 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkWithProrationPrice = NewSubscriptionBulkWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkWithProrationConfig) { + "`bulkWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkWithProrationConfig.Builder::class) @NoAutoDetect class BulkWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -51732,24 +41161,32 @@ constructor( @JvmSynthetic internal fun from(bulkWithProrationConfig: BulkWithProrationConfig) = apply { - additionalProperties(bulkWithProrationConfig.additionalProperties) + additionalProperties = + bulkWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkWithProrationConfig = BulkWithProrationConfig(additionalProperties.toImmutable()) } @@ -51910,43 +41347,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -51956,57 +41376,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -52092,43 +41511,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -52138,8 +41540,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -52147,49 +41549,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -52276,25 +41677,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -52309,24 +41703,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCreateResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCreateResponse.kt index e011b623..864e6329 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCreateResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionCreateResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionCreateResponse.Builder::class) @NoAutoDetect class SubscriptionCreateResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionCreateResponse = apply { if (!validated) { metadata().validate() @@ -401,35 +450,33 @@ private constructor( @JvmSynthetic internal fun from(subscriptionCreateResponse: SubscriptionCreateResponse) = apply { - this.metadata = subscriptionCreateResponse.metadata - this.id = subscriptionCreateResponse.id - this.customer = subscriptionCreateResponse.customer - this.plan = subscriptionCreateResponse.plan - this.startDate = subscriptionCreateResponse.startDate - this.endDate = subscriptionCreateResponse.endDate - this.createdAt = subscriptionCreateResponse.createdAt - this.currentBillingPeriodStartDate = - subscriptionCreateResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = - subscriptionCreateResponse.currentBillingPeriodEndDate - this.status = subscriptionCreateResponse.status - this.trialInfo = subscriptionCreateResponse.trialInfo - this.activePlanPhaseOrder = subscriptionCreateResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = subscriptionCreateResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = subscriptionCreateResponse.defaultInvoiceMemo - this.autoCollection = subscriptionCreateResponse.autoCollection - this.netTerms = subscriptionCreateResponse.netTerms - this.redeemedCoupon = subscriptionCreateResponse.redeemedCoupon - this.billingCycleDay = subscriptionCreateResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + metadata = subscriptionCreateResponse.metadata + id = subscriptionCreateResponse.id + customer = subscriptionCreateResponse.customer + plan = subscriptionCreateResponse.plan + startDate = subscriptionCreateResponse.startDate + endDate = subscriptionCreateResponse.endDate + createdAt = subscriptionCreateResponse.createdAt + currentBillingPeriodStartDate = subscriptionCreateResponse.currentBillingPeriodStartDate + currentBillingPeriodEndDate = subscriptionCreateResponse.currentBillingPeriodEndDate + status = subscriptionCreateResponse.status + trialInfo = subscriptionCreateResponse.trialInfo + activePlanPhaseOrder = subscriptionCreateResponse.activePlanPhaseOrder + fixedFeeQuantitySchedule = subscriptionCreateResponse.fixedFeeQuantitySchedule + defaultInvoiceMemo = subscriptionCreateResponse.defaultInvoiceMemo + autoCollection = subscriptionCreateResponse.autoCollection + netTerms = subscriptionCreateResponse.netTerms + redeemedCoupon = subscriptionCreateResponse.redeemedCoupon + billingCycleDay = subscriptionCreateResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionCreateResponse.billingCycleAnchorConfiguration - this.invoicingThreshold = subscriptionCreateResponse.invoicingThreshold - this.priceIntervals = subscriptionCreateResponse.priceIntervals - this.adjustmentIntervals = subscriptionCreateResponse.adjustmentIntervals - this.discountIntervals = subscriptionCreateResponse.discountIntervals - this.minimumIntervals = subscriptionCreateResponse.minimumIntervals - this.maximumIntervals = subscriptionCreateResponse.maximumIntervals - additionalProperties(subscriptionCreateResponse.additionalProperties) + invoicingThreshold = subscriptionCreateResponse.invoicingThreshold + priceIntervals = subscriptionCreateResponse.priceIntervals + adjustmentIntervals = subscriptionCreateResponse.adjustmentIntervals + discountIntervals = subscriptionCreateResponse.discountIntervals + minimumIntervals = subscriptionCreateResponse.minimumIntervals + maximumIntervals = subscriptionCreateResponse.maximumIntervals + additionalProperties = subscriptionCreateResponse.additionalProperties.toMutableMap() } /** @@ -444,13 +491,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -490,8 +535,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -508,30 +551,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -547,8 +582,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -566,8 +599,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -575,14 +606,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -590,8 +617,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -599,8 +624,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -616,8 +639,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -634,8 +655,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -652,15 +671,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -679,8 +694,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -689,8 +702,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -698,8 +709,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -709,8 +718,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -720,8 +727,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -731,8 +736,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -742,8 +745,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -753,26 +754,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionCreateResponse = SubscriptionCreateResponse( metadata, @@ -804,20 +808,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -852,6 +863,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -881,24 +894,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -907,8 +916,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -917,8 +924,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -926,8 +931,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -935,18 +938,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1200,22 +1208,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1282,6 +1303,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1315,20 +1338,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1342,8 +1364,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1353,8 +1373,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1364,8 +1382,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1374,15 +1390,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1398,20 +1410,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1419,6 +1428,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1502,22 +1519,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1585,6 +1615,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1619,21 +1651,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1647,8 +1677,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1658,8 +1686,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1669,8 +1695,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1679,15 +1703,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1703,20 +1723,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1724,6 +1741,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1807,22 +1832,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1887,6 +1925,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1920,20 +1960,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1947,8 +1986,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1958,8 +1995,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1969,8 +2004,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1979,15 +2012,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2003,20 +2032,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2024,6 +2050,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2107,23 +2141,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2194,6 +2243,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2229,21 +2280,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2257,8 +2306,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2268,8 +2315,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2279,8 +2324,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2289,15 +2332,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2313,8 +2352,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2323,18 +2360,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2342,6 +2376,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2426,22 +2468,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2506,6 +2561,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2539,20 +2596,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2566,8 +2621,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2577,8 +2630,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2588,8 +2639,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2598,15 +2647,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2622,20 +2667,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2643,6 +2685,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2745,18 +2795,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2801,6 +2852,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2827,10 +2880,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2847,8 +2901,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2861,8 +2913,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2875,24 +2925,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3100,21 +3153,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3160,6 +3224,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3191,21 +3257,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3215,8 +3279,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3225,8 +3287,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3235,8 +3295,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3244,8 +3302,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3255,8 +3311,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3264,12 +3318,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3277,6 +3330,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3358,21 +3419,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3420,6 +3492,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3451,21 +3525,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3479,8 +3551,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3489,8 +3559,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3499,8 +3567,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3508,8 +3574,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3519,8 +3583,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3528,12 +3590,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3541,6 +3602,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3622,21 +3691,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3688,6 +3768,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3719,20 +3801,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3748,8 +3828,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3758,8 +3836,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3768,8 +3844,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3777,8 +3851,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3788,8 +3860,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3797,12 +3867,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3810,6 +3879,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3892,19 +3969,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3926,6 +4010,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3953,53 +4039,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4028,20 +4111,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4089,6 +4181,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4118,20 +4212,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4140,8 +4232,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4149,8 +4239,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4160,8 +4248,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4177,26 +4263,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4231,19 +4320,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4263,23 +4353,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4300,20 +4395,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4361,6 +4465,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4390,20 +4496,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4412,8 +4516,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4421,8 +4523,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4432,8 +4532,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4449,26 +4547,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4502,23 +4603,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5073,6 +5188,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5109,21 +5226,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5136,8 +5251,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5152,8 +5265,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5614,8 +5725,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5623,8 +5732,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5641,8 +5748,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5660,8 +5765,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5679,26 +5782,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5713,18 +5819,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5741,6 +5852,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5766,41 +5879,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5808,6 +5915,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5853,18 +5968,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5882,6 +6002,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5907,46 +6029,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6037,16 +6158,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6056,6 +6178,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6077,30 +6201,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchCostsResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchCostsResponse.kt index 833d70ef..50536cd2 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchCostsResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchCostsResponse.kt @@ -4,28 +4,29 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = SubscriptionFetchCostsResponse.Builder::class) @NoAutoDetect class SubscriptionFetchCostsResponse +@JsonCreator private constructor( - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun data(): List = data.getRequired("data") @JsonProperty("data") @ExcludeMissing fun _data() = data @@ -34,6 +35,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionFetchCostsResponse = apply { if (!validated) { data().forEach { it.validate() } @@ -55,30 +58,34 @@ private constructor( @JvmSynthetic internal fun from(subscriptionFetchCostsResponse: SubscriptionFetchCostsResponse) = apply { - this.data = subscriptionFetchCostsResponse.data - additionalProperties(subscriptionFetchCostsResponse.additionalProperties) + data = subscriptionFetchCostsResponse.data + additionalProperties = + subscriptionFetchCostsResponse.additionalProperties.toMutableMap() } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionFetchCostsResponse = SubscriptionFetchCostsResponse( data.map { it.toImmutable() }, @@ -86,20 +93,29 @@ private constructor( ) } - @JsonDeserialize(builder = Data.Builder::class) @NoAutoDetect class Data + @JsonCreator private constructor( - private val subtotal: JsonField, - private val total: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val perPriceCosts: JsonField>, - private val additionalProperties: Map, + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("total") + @ExcludeMissing + private val total: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonProperty("per_price_costs") + @ExcludeMissing + private val perPriceCosts: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Total costs for the timeframe, excluding any minimums and discounts. */ fun subtotal(): String = subtotal.getRequired("subtotal") @@ -128,6 +144,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Data = apply { if (!validated) { subtotal() @@ -157,35 +175,29 @@ private constructor( @JvmSynthetic internal fun from(data: Data) = apply { - this.subtotal = data.subtotal - this.total = data.total - this.timeframeStart = data.timeframeStart - this.timeframeEnd = data.timeframeEnd - this.perPriceCosts = data.perPriceCosts - additionalProperties(data.additionalProperties) + subtotal = data.subtotal + total = data.total + timeframeStart = data.timeframeStart + timeframeEnd = data.timeframeEnd + perPriceCosts = data.perPriceCosts + additionalProperties = data.additionalProperties.toMutableMap() } /** Total costs for the timeframe, excluding any minimums and discounts. */ fun subtotal(subtotal: String) = subtotal(JsonField.of(subtotal)) /** Total costs for the timeframe, excluding any minimums and discounts. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** Total costs for the timeframe, including any minimums and discounts. */ fun total(total: String) = total(JsonField.of(total)) /** Total costs for the timeframe, including any minimums and discounts. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } @@ -193,8 +205,6 @@ private constructor( fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } @@ -202,26 +212,29 @@ private constructor( fun perPriceCosts(perPriceCosts: List) = perPriceCosts(JsonField.of(perPriceCosts)) - @JsonProperty("per_price_costs") - @ExcludeMissing fun perPriceCosts(perPriceCosts: JsonField>) = apply { this.perPriceCosts = perPriceCosts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Data = Data( subtotal, @@ -233,19 +246,26 @@ private constructor( ) } - @JsonDeserialize(builder = PerPriceCost.Builder::class) @NoAutoDetect class PerPriceCost + @JsonCreator private constructor( - private val quantity: JsonField, - private val subtotal: JsonField, - private val total: JsonField, - private val price: JsonField, - private val additionalProperties: Map, + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("subtotal") + @ExcludeMissing + private val subtotal: JsonField = JsonMissing.of(), + @JsonProperty("total") + @ExcludeMissing + private val total: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The price's quantity for the timeframe */ fun quantity(): Optional = Optional.ofNullable(quantity.getNullable("quantity")) @@ -728,6 +748,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PerPriceCost = apply { if (!validated) { quantity() @@ -755,19 +777,17 @@ private constructor( @JvmSynthetic internal fun from(perPriceCost: PerPriceCost) = apply { - this.quantity = perPriceCost.quantity - this.subtotal = perPriceCost.subtotal - this.total = perPriceCost.total - this.price = perPriceCost.price - additionalProperties(perPriceCost.additionalProperties) + quantity = perPriceCost.quantity + subtotal = perPriceCost.subtotal + total = perPriceCost.total + price = perPriceCost.price + additionalProperties = perPriceCost.additionalProperties.toMutableMap() } /** The price's quantity for the timeframe */ fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) /** The price's quantity for the timeframe */ - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } /** @@ -778,16 +798,12 @@ private constructor( /** * Price's contributions for the timeframe, excluding any minimums and discounts. */ - @JsonProperty("subtotal") - @ExcludeMissing fun subtotal(subtotal: JsonField) = apply { this.subtotal = subtotal } /** Price's contributions for the timeframe, including minimums and discounts. */ fun total(total: String) = total(JsonField.of(total)) /** Price's contributions for the timeframe, including minimums and discounts. */ - @JsonProperty("total") - @ExcludeMissing fun total(total: JsonField) = apply { this.total = total } /** @@ -1256,18 +1272,15 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1275,6 +1288,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PerPriceCost = PerPriceCost( quantity, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchSchedulePage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchSchedulePage.kt index b10fb983..a0094dea 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchSchedulePage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchSchedulePage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.SubscriptionService import java.util.Objects @@ -86,13 +87,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -157,7 +161,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -165,12 +168,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchSchedulePageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchSchedulePageAsync.kt index cb9acbe9..ad97fbea 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchSchedulePageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchSchedulePageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.SubscriptionServiceAsync import java.util.Objects @@ -89,13 +90,16 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -160,7 +164,6 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } @@ -168,12 +171,10 @@ private constructor( fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchScheduleResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchScheduleResponse.kt index 0aa75233..306bd59d 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchScheduleResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionFetchScheduleResponse.kt @@ -4,31 +4,36 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.OffsetDateTime import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = SubscriptionFetchScheduleResponse.Builder::class) @NoAutoDetect class SubscriptionFetchScheduleResponse +@JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val plan: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun startDate(): OffsetDateTime = startDate.getRequired("start_date") fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -49,6 +54,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionFetchScheduleResponse = apply { if (!validated) { startDate() @@ -77,51 +84,49 @@ private constructor( @JvmSynthetic internal fun from(subscriptionFetchScheduleResponse: SubscriptionFetchScheduleResponse) = apply { - this.startDate = subscriptionFetchScheduleResponse.startDate - this.endDate = subscriptionFetchScheduleResponse.endDate - this.createdAt = subscriptionFetchScheduleResponse.createdAt - this.plan = subscriptionFetchScheduleResponse.plan - additionalProperties(subscriptionFetchScheduleResponse.additionalProperties) + startDate = subscriptionFetchScheduleResponse.startDate + endDate = subscriptionFetchScheduleResponse.endDate + createdAt = subscriptionFetchScheduleResponse.createdAt + plan = subscriptionFetchScheduleResponse.plan + additionalProperties = + subscriptionFetchScheduleResponse.additionalProperties.toMutableMap() } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } fun plan(plan: Plan) = plan(JsonField.of(plan)) - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionFetchScheduleResponse = SubscriptionFetchScheduleResponse( startDate, @@ -132,18 +137,21 @@ private constructor( ) } - @JsonDeserialize(builder = Plan.Builder::class) @NoAutoDetect class Plan + @JsonCreator private constructor( - private val id: JsonField, - private val externalPlanId: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("external_plan_id") + @ExcludeMissing + private val externalPlanId: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): Optional = Optional.ofNullable(id.getNullable("id")) /** @@ -171,6 +179,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Plan = apply { if (!validated) { id() @@ -196,16 +206,14 @@ private constructor( @JvmSynthetic internal fun from(plan: Plan) = apply { - this.id = plan.id - this.externalPlanId = plan.externalPlanId - this.name = plan.name - additionalProperties(plan.additionalProperties) + id = plan.id + externalPlanId = plan.externalPlanId + name = plan.name + additionalProperties = plan.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -221,32 +229,33 @@ private constructor( * alias for this Plan. Use this field to identify a plan by an existing identifier in * your system. */ - @JsonProperty("external_plan_id") - @ExcludeMissing fun externalPlanId(externalPlanId: JsonField) = apply { this.externalPlanId = externalPlanId } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Plan = Plan( id, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionListPage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionListPage.kt index b463d32d..9fdcbb52 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionListPage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionListPage.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.blocking.SubscriptionService import java.util.Objects @@ -86,13 +87,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -156,18 +159,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionListPageAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionListPageAsync.kt index 79acb67f..dc2c7c06 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionListPageAsync.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionListPageAsync.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.services.async.SubscriptionServiceAsync import java.util.Objects @@ -89,13 +90,15 @@ private constructor( ) } - @JsonDeserialize(builder = Response.Builder::class) @NoAutoDetect class Response + @JsonCreator constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { private var validated: Boolean = false @@ -159,18 +162,15 @@ private constructor( fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { this.additionalProperties.put(key, value) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsParams.kt index d6e4d185..4d5175f3 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsParams.kt @@ -18,12 +18,12 @@ import com.withorb.api.core.BaseSerializer import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField -import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -81,29 +81,31 @@ constructor( } } - @JsonDeserialize(builder = SubscriptionPriceIntervalsBody.Builder::class) @NoAutoDetect class SubscriptionPriceIntervalsBody + @JsonCreator internal constructor( - private val add: List?, - private val addAdjustments: List?, - private val edit: List?, - private val editAdjustments: List?, - private val additionalProperties: Map, + @JsonProperty("add") private val add: List?, + @JsonProperty("add_adjustments") private val addAdjustments: List?, + @JsonProperty("edit") private val edit: List?, + @JsonProperty("edit_adjustments") private val editAdjustments: List?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** A list of price intervals to add to the subscription. */ - @JsonProperty("add") fun add(): List? = add + @JsonProperty("add") fun add(): Optional> = Optional.ofNullable(add) /** A list of adjustments to add to the subscription. */ - @JsonProperty("add_adjustments") fun addAdjustments(): List? = addAdjustments + @JsonProperty("add_adjustments") + fun addAdjustments(): Optional> = Optional.ofNullable(addAdjustments) /** A list of price intervals to edit on the subscription. */ - @JsonProperty("edit") fun edit(): List? = edit + @JsonProperty("edit") fun edit(): Optional> = Optional.ofNullable(edit) /** A list of adjustments to edit on the subscription. */ @JsonProperty("edit_adjustments") - fun editAdjustments(): List? = editAdjustments + fun editAdjustments(): Optional> = Optional.ofNullable(editAdjustments) @JsonAnyGetter @ExcludeMissing @@ -127,45 +129,50 @@ constructor( @JvmSynthetic internal fun from(subscriptionPriceIntervalsBody: SubscriptionPriceIntervalsBody) = apply { - this.add = subscriptionPriceIntervalsBody.add - this.addAdjustments = subscriptionPriceIntervalsBody.addAdjustments - this.edit = subscriptionPriceIntervalsBody.edit - this.editAdjustments = subscriptionPriceIntervalsBody.editAdjustments - additionalProperties(subscriptionPriceIntervalsBody.additionalProperties) + add = subscriptionPriceIntervalsBody.add?.toMutableList() + addAdjustments = subscriptionPriceIntervalsBody.addAdjustments?.toMutableList() + edit = subscriptionPriceIntervalsBody.edit?.toMutableList() + editAdjustments = + subscriptionPriceIntervalsBody.editAdjustments?.toMutableList() + additionalProperties = + subscriptionPriceIntervalsBody.additionalProperties.toMutableMap() } /** A list of price intervals to add to the subscription. */ - @JsonProperty("add") fun add(add: List) = apply { this.add = add } + fun add(add: List) = apply { this.add = add } /** A list of adjustments to add to the subscription. */ - @JsonProperty("add_adjustments") fun addAdjustments(addAdjustments: List) = apply { this.addAdjustments = addAdjustments } /** A list of price intervals to edit on the subscription. */ - @JsonProperty("edit") fun edit(edit: List) = apply { this.edit = edit } + fun edit(edit: List) = apply { this.edit = edit } /** A list of adjustments to edit on the subscription. */ - @JsonProperty("edit_adjustments") fun editAdjustments(editAdjustments: List) = apply { this.editAdjustments = editAdjustments } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionPriceIntervalsBody = SubscriptionPriceIntervalsBody( add?.toImmutable(), @@ -407,66 +414,73 @@ constructor( ) } - @JsonDeserialize(builder = Add.Builder::class) @NoAutoDetect class Add + @JsonCreator private constructor( - private val priceId: String?, - private val externalPriceId: String?, - private val price: Price?, - private val allocationPrice: AllocationPrice?, - private val startDate: StartDate?, - private val endDate: EndDate?, + @JsonProperty("price_id") private val priceId: String?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("price") private val price: Price?, + @JsonProperty("allocation_price") private val allocationPrice: AllocationPrice?, + @JsonProperty("start_date") private val startDate: StartDate, + @JsonProperty("end_date") private val endDate: EndDate?, + @JsonProperty("fixed_fee_quantity_transitions") private val fixedFeeQuantityTransitions: List?, - private val discounts: List?, - private val minimumAmount: Double?, - private val maximumAmount: Double?, - private val additionalProperties: Map, + @JsonProperty("discounts") private val discounts: List?, + @JsonProperty("minimum_amount") private val minimumAmount: Double?, + @JsonProperty("maximum_amount") private val maximumAmount: Double?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(): String? = priceId + @JsonProperty("price_id") fun priceId(): Optional = Optional.ofNullable(priceId) /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(): Price? = price + @JsonProperty("price") fun price(): Optional = Optional.ofNullable(price) /** The definition of a new allocation price to create and add to the subscription. */ - @JsonProperty("allocation_price") fun allocationPrice(): AllocationPrice? = allocationPrice + @JsonProperty("allocation_price") + fun allocationPrice(): Optional = Optional.ofNullable(allocationPrice) /** * The start date of the price interval. This is the date that the price will start billing * on the subscription. */ - @JsonProperty("start_date") fun startDate(): StartDate? = startDate + @JsonProperty("start_date") fun startDate(): StartDate = startDate /** * The end date of the price interval. This is the date that the price will stop billing on * the subscription. */ - @JsonProperty("end_date") fun endDate(): EndDate? = endDate + @JsonProperty("end_date") fun endDate(): Optional = Optional.ofNullable(endDate) /** A list of fixed fee quantity transitions to initialize on the price interval. */ @JsonProperty("fixed_fee_quantity_transitions") - fun fixedFeeQuantityTransitions(): List? = - fixedFeeQuantityTransitions + fun fixedFeeQuantityTransitions(): Optional> = + Optional.ofNullable(fixedFeeQuantityTransitions) /** A list of discounts to initialize on the price interval. */ - @JsonProperty("discounts") fun discounts(): List? = discounts + @JsonProperty("discounts") + fun discounts(): Optional> = Optional.ofNullable(discounts) /** * The minimum amount that will be billed for this price interval for a given billing * period. */ - @JsonProperty("minimum_amount") fun minimumAmount(): Double? = minimumAmount + @JsonProperty("minimum_amount") + fun minimumAmount(): Optional = Optional.ofNullable(minimumAmount) /** * The maximum amount that will be billed for this price interval for a given billing * period. */ - @JsonProperty("maximum_amount") fun maximumAmount(): Double? = maximumAmount + @JsonProperty("maximum_amount") + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) @JsonAnyGetter @ExcludeMissing @@ -495,34 +509,31 @@ constructor( @JvmSynthetic internal fun from(add: Add) = apply { - this.priceId = add.priceId - this.externalPriceId = add.externalPriceId - this.price = add.price - this.allocationPrice = add.allocationPrice - this.startDate = add.startDate - this.endDate = add.endDate - this.fixedFeeQuantityTransitions = add.fixedFeeQuantityTransitions - this.discounts = add.discounts - this.minimumAmount = add.minimumAmount - this.maximumAmount = add.maximumAmount - additionalProperties(add.additionalProperties) + priceId = add.priceId + externalPriceId = add.externalPriceId + price = add.price + allocationPrice = add.allocationPrice + startDate = add.startDate + endDate = add.endDate + fixedFeeQuantityTransitions = add.fixedFeeQuantityTransitions?.toMutableList() + discounts = add.discounts?.toMutableList() + minimumAmount = add.minimumAmount + maximumAmount = add.maximumAmount + additionalProperties = add.additionalProperties.toMutableMap() } /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(priceId: String) = apply { this.priceId = priceId } /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(price: Price) = apply { this.price = price } + fun price(price: Price) = apply { this.price = price } /** The definition of a new allocation price to create and add to the subscription. */ - @JsonProperty("allocation_price") fun allocationPrice(allocationPrice: AllocationPrice) = apply { this.allocationPrice = allocationPrice } @@ -531,54 +542,53 @@ constructor( * The start date of the price interval. This is the date that the price will start * billing on the subscription. */ - @JsonProperty("start_date") fun startDate(startDate: StartDate) = apply { this.startDate = startDate } /** * The end date of the price interval. This is the date that the price will stop billing * on the subscription. */ - @JsonProperty("end_date") fun endDate(endDate: EndDate) = apply { this.endDate = endDate } /** A list of fixed fee quantity transitions to initialize on the price interval. */ - @JsonProperty("fixed_fee_quantity_transitions") fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: List ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } /** A list of discounts to initialize on the price interval. */ - @JsonProperty("discounts") fun discounts(discounts: List) = apply { this.discounts = discounts } /** * The minimum amount that will be billed for this price interval for a given billing * period. */ - @JsonProperty("minimum_amount") fun minimumAmount(minimumAmount: Double) = apply { this.minimumAmount = minimumAmount } /** * The maximum amount that will be billed for this price interval for a given billing * period. */ - @JsonProperty("maximum_amount") fun maximumAmount(maximumAmount: Double) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Add = Add( priceId, @@ -604,8 +614,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun dateTime(): Optional = Optional.ofNullable(dateTime) fun billingCycleRelativeDate(): Optional = @@ -631,15 +639,6 @@ constructor( } } - fun validate(): StartDate = apply { - if (!validated) { - if (dateTime == null && billingCycleRelativeDate == null) { - throw OrbInvalidDataException("Unknown StartDate: $_json") - } - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -716,35 +715,36 @@ constructor( } /** The definition of a new allocation price to create and add to the subscription. */ - @JsonDeserialize(builder = AllocationPrice.Builder::class) @NoAutoDetect class AllocationPrice + @JsonCreator private constructor( - private val currency: String?, - private val amount: String?, - private val cadence: Cadence?, - private val expiresAtEndOfCadence: Boolean?, - private val additionalProperties: Map, + @JsonProperty("currency") private val currency: String, + @JsonProperty("amount") private val amount: String, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("expires_at_end_of_cadence") private val expiresAtEndOfCadence: Boolean, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * An ISO 4217 currency string or a custom pricing unit identifier in which to bill this * price. */ - @JsonProperty("currency") fun currency(): String? = currency + @JsonProperty("currency") fun currency(): String = currency /** An amount of the currency to allocate to the customer at the specified cadence. */ - @JsonProperty("amount") fun amount(): String? = amount + @JsonProperty("amount") fun amount(): String = amount /** The cadence at which to allocate the amount to the customer. */ - @JsonProperty("cadence") fun cadence(): Cadence? = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * Whether the allocated amount should expire at the end of the cadence or roll over to * the next period. */ @JsonProperty("expires_at_end_of_cadence") - fun expiresAtEndOfCadence(): Boolean? = expiresAtEndOfCadence + fun expiresAtEndOfCadence(): Boolean = expiresAtEndOfCadence @JsonAnyGetter @ExcludeMissing @@ -767,46 +767,42 @@ constructor( @JvmSynthetic internal fun from(allocationPrice: AllocationPrice) = apply { - this.currency = allocationPrice.currency - this.amount = allocationPrice.amount - this.cadence = allocationPrice.cadence - this.expiresAtEndOfCadence = allocationPrice.expiresAtEndOfCadence - additionalProperties(allocationPrice.additionalProperties) + currency = allocationPrice.currency + amount = allocationPrice.amount + cadence = allocationPrice.cadence + expiresAtEndOfCadence = allocationPrice.expiresAtEndOfCadence + additionalProperties = allocationPrice.additionalProperties.toMutableMap() } /** * An ISO 4217 currency string or a custom pricing unit identifier in which to bill * this price. */ - @JsonProperty("currency") fun currency(currency: String) = apply { this.currency = currency } /** * An amount of the currency to allocate to the customer at the specified cadence. */ - @JsonProperty("amount") fun amount(amount: String) = apply { this.amount = amount } + fun amount(amount: String) = apply { this.amount = amount } /** The cadence at which to allocate the amount to the customer. */ - @JsonProperty("cadence") fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * Whether the allocated amount should expire at the end of the cadence or roll over * to the next period. */ - @JsonProperty("expires_at_end_of_cadence") fun expiresAtEndOfCadence(expiresAtEndOfCadence: Boolean) = apply { this.expiresAtEndOfCadence = expiresAtEndOfCadence } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -814,6 +810,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AllocationPrice = AllocationPrice( checkNotNull(currency) { "`currency` is required but was not set" }, @@ -935,8 +939,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun amountDiscountCreationParams(): Optional = Optional.ofNullable(amountDiscountCreationParams) @@ -978,22 +980,6 @@ constructor( } } - fun validate(): Discount = apply { - if (!validated) { - if ( - amountDiscountCreationParams == null && - percentageDiscountCreationParams == null && - usageDiscountCreationParams == null - ) { - throw OrbInvalidDataException("Unknown Discount: $_json") - } - amountDiscountCreationParams?.validate() - percentageDiscountCreationParams?.validate() - usageDiscountCreationParams?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -1062,20 +1048,13 @@ constructor( when (discountType) { "amount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Discount(amountDiscountCreationParams = it, _json = json) } } "percentage" -> { - tryDeserialize( - node, - jacksonTypeRef() - ) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Discount( percentageDiscountCreationParams = it, @@ -1084,9 +1063,7 @@ constructor( } } "usage" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Discount(usageDiscountCreationParams = it, _json = json) } @@ -1117,41 +1094,25 @@ constructor( } } - @JsonDeserialize(builder = AmountDiscountCreationParams.Builder::class) @NoAutoDetect class AmountDiscountCreationParams + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("discount_type") private val discountType: DiscountType, + @JsonProperty("amount_discount") private val amountDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun discountType(): DiscountType = discountType.getRequired("discount_type") + @JsonProperty("discount_type") fun discountType(): DiscountType = discountType /** Only available if discount_type is `amount`. */ - fun amountDiscount(): Double = amountDiscount.getRequired("amount_discount") - - @JsonProperty("discount_type") @ExcludeMissing fun _discountType() = discountType - - /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing - fun _amountDiscount() = amountDiscount + @JsonProperty("amount_discount") fun amountDiscount(): Double = amountDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): AmountDiscountCreationParams = apply { - if (!validated) { - discountType() - amountDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1161,46 +1122,35 @@ constructor( class Builder { - private var discountType: JsonField = JsonMissing.of() - private var amountDiscount: JsonField = JsonMissing.of() + private var discountType: DiscountType? = null + private var amountDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(amountDiscountCreationParams: AmountDiscountCreationParams) = apply { - this.discountType = amountDiscountCreationParams.discountType - this.amountDiscount = amountDiscountCreationParams.amountDiscount - additionalProperties(amountDiscountCreationParams.additionalProperties) + discountType = amountDiscountCreationParams.discountType + amountDiscount = amountDiscountCreationParams.amountDiscount + additionalProperties = + amountDiscountCreationParams.additionalProperties.toMutableMap() } - fun discountType(discountType: DiscountType) = - discountType(JsonField.of(discountType)) - - @JsonProperty("discount_type") - @ExcludeMissing - fun discountType(discountType: JsonField) = apply { + fun discountType(discountType: DiscountType) = apply { this.discountType = discountType } /** Only available if discount_type is `amount`. */ - fun amountDiscount(amountDiscount: Double) = - amountDiscount(JsonField.of(amountDiscount)) - - /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing - fun amountDiscount(amountDiscount: JsonField) = apply { + fun amountDiscount(amountDiscount: Double) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1208,10 +1158,22 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountCreationParams = AmountDiscountCreationParams( - discountType, - amountDiscount, + checkNotNull(discountType) { + "`discountType` is required but was not set" + }, + checkNotNull(amountDiscount) { + "`amountDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -1286,48 +1248,29 @@ constructor( "AmountDiscountCreationParams{discountType=$discountType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountCreationParams.Builder::class) @NoAutoDetect class PercentageDiscountCreationParams + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("discount_type") private val discountType: DiscountType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun discountType(): DiscountType = discountType.getRequired("discount_type") - - /** - * Only available if discount_type is `percentage`. This is a number between 0 - * and 1. - */ - fun percentageDiscount(): Double = - percentageDiscount.getRequired("percentage_discount") - - @JsonProperty("discount_type") @ExcludeMissing fun _discountType() = discountType + @JsonProperty("discount_type") fun discountType(): DiscountType = discountType /** * Only available if discount_type is `percentage`. This is a number between 0 * and 1. */ @JsonProperty("percentage_discount") - @ExcludeMissing - fun _percentageDiscount() = percentageDiscount + fun percentageDiscount(): Double = percentageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PercentageDiscountCreationParams = apply { - if (!validated) { - discountType() - percentageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1337,26 +1280,21 @@ constructor( class Builder { - private var discountType: JsonField = JsonMissing.of() - private var percentageDiscount: JsonField = JsonMissing.of() + private var discountType: DiscountType? = null + private var percentageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( percentageDiscountCreationParams: PercentageDiscountCreationParams ) = apply { - this.discountType = percentageDiscountCreationParams.discountType - this.percentageDiscount = - percentageDiscountCreationParams.percentageDiscount - additionalProperties(percentageDiscountCreationParams.additionalProperties) + discountType = percentageDiscountCreationParams.discountType + percentageDiscount = percentageDiscountCreationParams.percentageDiscount + additionalProperties = + percentageDiscountCreationParams.additionalProperties.toMutableMap() } - fun discountType(discountType: DiscountType) = - discountType(JsonField.of(discountType)) - - @JsonProperty("discount_type") - @ExcludeMissing - fun discountType(discountType: JsonField) = apply { + fun discountType(discountType: DiscountType) = apply { this.discountType = discountType } @@ -1364,27 +1302,17 @@ constructor( * Only available if discount_type is `percentage`. This is a number between 0 * and 1. */ - fun percentageDiscount(percentageDiscount: Double) = - percentageDiscount(JsonField.of(percentageDiscount)) - - /** - * Only available if discount_type is `percentage`. This is a number between 0 - * and 1. - */ - @JsonProperty("percentage_discount") - @ExcludeMissing - fun percentageDiscount(percentageDiscount: JsonField) = apply { + fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1392,10 +1320,22 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountCreationParams = PercentageDiscountCreationParams( - discountType, - percentageDiscount, + checkNotNull(discountType) { + "`discountType` is required but was not set" + }, + checkNotNull(percentageDiscount) { + "`percentageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -1470,45 +1410,28 @@ constructor( "PercentageDiscountCreationParams{discountType=$discountType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountCreationParams.Builder::class) @NoAutoDetect class UsageDiscountCreationParams + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("discount_type") private val discountType: DiscountType, + @JsonProperty("usage_discount") private val usageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - fun discountType(): DiscountType = discountType.getRequired("discount_type") - - /** - * Only available if discount_type is `usage`. Number of usage units that this - * discount is for. - */ - fun usageDiscount(): Double = usageDiscount.getRequired("usage_discount") - - @JsonProperty("discount_type") @ExcludeMissing fun _discountType() = discountType + @JsonProperty("discount_type") fun discountType(): DiscountType = discountType /** * Only available if discount_type is `usage`. Number of usage units that this * discount is for. */ - @JsonProperty("usage_discount") @ExcludeMissing fun _usageDiscount() = usageDiscount + @JsonProperty("usage_discount") fun usageDiscount(): Double = usageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UsageDiscountCreationParams = apply { - if (!validated) { - discountType() - usageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1518,24 +1441,20 @@ constructor( class Builder { - private var discountType: JsonField = JsonMissing.of() - private var usageDiscount: JsonField = JsonMissing.of() + private var discountType: DiscountType? = null + private var usageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(usageDiscountCreationParams: UsageDiscountCreationParams) = apply { - this.discountType = usageDiscountCreationParams.discountType - this.usageDiscount = usageDiscountCreationParams.usageDiscount - additionalProperties(usageDiscountCreationParams.additionalProperties) + discountType = usageDiscountCreationParams.discountType + usageDiscount = usageDiscountCreationParams.usageDiscount + additionalProperties = + usageDiscountCreationParams.additionalProperties.toMutableMap() } - fun discountType(discountType: DiscountType) = - discountType(JsonField.of(discountType)) - - @JsonProperty("discount_type") - @ExcludeMissing - fun discountType(discountType: JsonField) = apply { + fun discountType(discountType: DiscountType) = apply { this.discountType = discountType } @@ -1543,27 +1462,17 @@ constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for. */ - fun usageDiscount(usageDiscount: Double) = - usageDiscount(JsonField.of(usageDiscount)) - - /** - * Only available if discount_type is `usage`. Number of usage units that this - * discount is for. - */ - @JsonProperty("usage_discount") - @ExcludeMissing - fun usageDiscount(usageDiscount: JsonField) = apply { + fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1571,10 +1480,22 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountCreationParams = UsageDiscountCreationParams( - discountType, - usageDiscount, + checkNotNull(discountType) { + "`discountType` is required but was not set" + }, + checkNotNull(usageDiscount) { + "`usageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -1659,8 +1580,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun dateTime(): Optional = Optional.ofNullable(dateTime) fun billingCycleRelativeDate(): Optional = @@ -1686,15 +1605,6 @@ constructor( } } - fun validate(): EndDate = apply { - if (!validated) { - if (dateTime == null && billingCycleRelativeDate == null) { - throw OrbInvalidDataException("Unknown EndDate: $_json") - } - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -1770,20 +1680,21 @@ constructor( } } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val quantity: Long?, - private val effectiveDate: OffsetDateTime?, - private val additionalProperties: Map, + @JsonProperty("quantity") private val quantity: Long, + @JsonProperty("effective_date") private val effectiveDate: OffsetDateTime, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The quantity of the fixed fee quantity transition. */ - @JsonProperty("quantity") fun quantity(): Long? = quantity + @JsonProperty("quantity") fun quantity(): Long = quantity /** The date that the fixed fee quantity transition should take effect. */ - @JsonProperty("effective_date") fun effectiveDate(): OffsetDateTime? = effectiveDate + @JsonProperty("effective_date") fun effectiveDate(): OffsetDateTime = effectiveDate @JsonAnyGetter @ExcludeMissing @@ -1804,29 +1715,27 @@ constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.quantity = fixedFeeQuantityTransition.quantity - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + quantity = fixedFeeQuantityTransition.quantity + effectiveDate = fixedFeeQuantityTransition.effectiveDate + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } /** The quantity of the fixed fee quantity transition. */ - @JsonProperty("quantity") fun quantity(quantity: Long) = apply { this.quantity = quantity } /** The date that the fixed fee quantity transition should take effect. */ - @JsonProperty("effective_date") fun effectiveDate(effectiveDate: OffsetDateTime) = apply { this.effectiveDate = effectiveDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1834,6 +1743,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( checkNotNull(quantity) { "`quantity` is required but was not set" }, @@ -1914,8 +1831,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newFloatingUnitPrice(): Optional = Optional.ofNullable(newFloatingUnitPrice) @@ -2236,64 +2151,6 @@ constructor( } } - fun validate(): Price = apply { - if (!validated) { - if ( - newFloatingUnitPrice == null && - newFloatingPackagePrice == null && - newFloatingMatrixPrice == null && - newFloatingMatrixWithAllocationPrice == null && - newFloatingTieredPrice == null && - newFloatingTieredBpsPrice == null && - newFloatingBpsPrice == null && - newFloatingBulkBpsPrice == null && - newFloatingBulkPrice == null && - newFloatingThresholdTotalAmountPrice == null && - newFloatingTieredPackagePrice == null && - newFloatingGroupedTieredPrice == null && - newFloatingTieredWithMinimumPrice == null && - newFloatingPackageWithAllocationPrice == null && - newFloatingTieredPackageWithMinimumPrice == null && - newFloatingUnitWithPercentPrice == null && - newFloatingTieredWithProrationPrice == null && - newFloatingUnitWithProrationPrice == null && - newFloatingGroupedAllocationPrice == null && - newFloatingGroupedWithProratedMinimumPrice == null && - newFloatingGroupedWithMeteredMinimumPrice == null && - newFloatingMatrixWithDisplayNamePrice == null && - newFloatingBulkWithProrationPrice == null && - newFloatingGroupedTieredPackagePrice == null - ) { - throw OrbInvalidDataException("Unknown Price: $_json") - } - newFloatingUnitPrice?.validate() - newFloatingPackagePrice?.validate() - newFloatingMatrixPrice?.validate() - newFloatingMatrixWithAllocationPrice?.validate() - newFloatingTieredPrice?.validate() - newFloatingTieredBpsPrice?.validate() - newFloatingBpsPrice?.validate() - newFloatingBulkBpsPrice?.validate() - newFloatingBulkPrice?.validate() - newFloatingThresholdTotalAmountPrice?.validate() - newFloatingTieredPackagePrice?.validate() - newFloatingGroupedTieredPrice?.validate() - newFloatingTieredWithMinimumPrice?.validate() - newFloatingPackageWithAllocationPrice?.validate() - newFloatingTieredPackageWithMinimumPrice?.validate() - newFloatingUnitWithPercentPrice?.validate() - newFloatingTieredWithProrationPrice?.validate() - newFloatingUnitWithProrationPrice?.validate() - newFloatingGroupedAllocationPrice?.validate() - newFloatingGroupedWithProratedMinimumPrice?.validate() - newFloatingGroupedWithMeteredMinimumPrice?.validate() - newFloatingMatrixWithDisplayNamePrice?.validate() - newFloatingBulkWithProrationPrice?.validate() - newFloatingGroupedTieredPackagePrice?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -2610,36 +2467,25 @@ constructor( when (modelType) { "unit" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newFloatingUnitPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newFloatingUnitPrice = it, _json = json) + } } "package" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newFloatingPackagePrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newFloatingPackagePrice = it, _json = json) + } } "matrix" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newFloatingMatrixPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newFloatingMatrixPrice = it, _json = json) + } } "matrix_with_allocation" -> { tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingMatrixWithAllocationPrice = it, @@ -2648,52 +2494,35 @@ constructor( } } "tiered" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newFloatingTieredPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newFloatingTieredPrice = it, _json = json) + } } "tiered_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newFloatingTieredBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newFloatingTieredBpsPrice = it, _json = json) + } } "bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newFloatingBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newFloatingBpsPrice = it, _json = json) + } } "bulk_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newFloatingBulkBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newFloatingBulkBpsPrice = it, _json = json) + } } "bulk" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newFloatingBulkPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newFloatingBulkPrice = it, _json = json) + } } "threshold_total_amount" -> { tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingThresholdTotalAmountPrice = it, @@ -2702,17 +2531,13 @@ constructor( } } "tiered_package" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newFloatingTieredPackagePrice = it, _json = json) } } "grouped_tiered" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newFloatingGroupedTieredPrice = it, _json = json) } @@ -2721,9 +2546,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingTieredWithMinimumPrice = it, @@ -2735,9 +2558,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingPackageWithAllocationPrice = it, @@ -2749,9 +2570,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingTieredPackageWithMinimumPrice = it, @@ -2760,12 +2579,7 @@ constructor( } } "unit_with_percent" -> { - tryDeserialize( - node, - jacksonTypeRef() - ) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newFloatingUnitWithPercentPrice = it, _json = json) } @@ -2774,9 +2588,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingTieredWithProrationPrice = it, @@ -2788,9 +2600,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingUnitWithProrationPrice = it, @@ -2802,9 +2612,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingGroupedAllocationPrice = it, @@ -2816,9 +2624,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingGroupedWithProratedMinimumPrice = it, @@ -2830,9 +2636,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingGroupedWithMeteredMinimumPrice = it, @@ -2844,9 +2648,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingMatrixWithDisplayNamePrice = it, @@ -2858,9 +2660,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingBulkWithProrationPrice = it, @@ -2872,9 +2672,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newFloatingGroupedTieredPackagePrice = it, @@ -2950,208 +2748,108 @@ constructor( } } - @JsonDeserialize(builder = NewFloatingUnitPrice.Builder::class) @NoAutoDetect class NewFloatingUnitPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_config") private val unitConfig: UnitConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitConfig(): UnitConfig = unitConfig.getRequired("unit_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("unit_config") @ExcludeMissing fun _unitConfig() = unitConfig + @JsonProperty("unit_config") fun unitConfig(): UnitConfig = unitConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingUnitPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -3161,46 +2859,43 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitConfig: UnitConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newFloatingUnitPrice: NewFloatingUnitPrice) = apply { - this.metadata = newFloatingUnitPrice.metadata - this.externalPriceId = newFloatingUnitPrice.externalPriceId - this.name = newFloatingUnitPrice.name - this.billableMetricId = newFloatingUnitPrice.billableMetricId - this.itemId = newFloatingUnitPrice.itemId - this.billedInAdvance = newFloatingUnitPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingUnitPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingUnitPrice.invoiceGroupingKey - this.cadence = newFloatingUnitPrice.cadence - this.billingCycleConfiguration = - newFloatingUnitPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + metadata = newFloatingUnitPrice.metadata + externalPriceId = newFloatingUnitPrice.externalPriceId + name = newFloatingUnitPrice.name + billableMetricId = newFloatingUnitPrice.billableMetricId + itemId = newFloatingUnitPrice.itemId + billedInAdvance = newFloatingUnitPrice.billedInAdvance + fixedPriceQuantity = newFloatingUnitPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingUnitPrice.invoiceGroupingKey + cadence = newFloatingUnitPrice.cadence + billingCycleConfiguration = newFloatingUnitPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingUnitPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingUnitPrice.conversionRate - this.modelType = newFloatingUnitPrice.modelType - this.unitConfig = newFloatingUnitPrice.unitConfig - this.currency = newFloatingUnitPrice.currency - additionalProperties(newFloatingUnitPrice.additionalProperties) + conversionRate = newFloatingUnitPrice.conversionRate + modelType = newFloatingUnitPrice.modelType + unitConfig = newFloatingUnitPrice.unitConfig + currency = newFloatingUnitPrice.currency + additionalProperties = + newFloatingUnitPrice.additionalProperties.toMutableMap() } /** @@ -3208,75 +2903,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -3284,37 +2936,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -3322,16 +2954,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -3340,65 +2962,29 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun unitConfig(unitConfig: UnitConfig) = unitConfig(JsonField.of(unitConfig)) - - @JsonProperty("unit_config") - @ExcludeMissing - fun unitConfig(unitConfig: JsonField) = apply { - this.unitConfig = unitConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun unitConfig(unitConfig: UnitConfig) = apply { this.unitConfig = unitConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3406,23 +2992,31 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingUnitPrice = NewFloatingUnitPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitConfig) { "`unitConfig` is required but was not set" }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -3561,33 +3155,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitConfig.Builder::class) @NoAutoDetect class UnitConfig + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Rate per unit of usage */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** Rate per unit of usage */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitConfig = apply { - if (!validated) { - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -3597,43 +3180,48 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(unitConfig: UnitConfig) = apply { - this.unitAmount = unitConfig.unitAmount - additionalProperties(unitConfig.additionalProperties) + unitAmount = unitConfig.unitAmount + additionalProperties = unitConfig.additionalProperties.toMutableMap() } /** Rate per unit of usage */ - fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - - /** Rate per unit of usage */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { - this.unitAmount = unitAmount - } + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitConfig = - UnitConfig(unitAmount, additionalProperties.toImmutable()) + UnitConfig( + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + additionalProperties.toImmutable() + ) } override fun equals(other: Any?): Boolean { @@ -3658,43 +3246,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -3704,57 +3275,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -3840,43 +3410,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -3886,8 +3439,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -3895,49 +3448,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -4024,25 +3576,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4057,24 +3602,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4113,208 +3665,108 @@ constructor( "NewFloatingUnitPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitConfig=$unitConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingPackagePrice.Builder::class) @NoAutoDetect class NewFloatingPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_config") private val packageConfig: PackageConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageConfig(): PackageConfig = packageConfig.getRequired("package_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("package_config") @ExcludeMissing fun _packageConfig() = packageConfig + @JsonProperty("package_config") fun packageConfig(): PackageConfig = packageConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4324,46 +3776,44 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageConfig: PackageConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newFloatingPackagePrice: NewFloatingPackagePrice) = apply { - this.metadata = newFloatingPackagePrice.metadata - this.externalPriceId = newFloatingPackagePrice.externalPriceId - this.name = newFloatingPackagePrice.name - this.billableMetricId = newFloatingPackagePrice.billableMetricId - this.itemId = newFloatingPackagePrice.itemId - this.billedInAdvance = newFloatingPackagePrice.billedInAdvance - this.fixedPriceQuantity = newFloatingPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingPackagePrice.invoiceGroupingKey - this.cadence = newFloatingPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingPackagePrice.metadata + externalPriceId = newFloatingPackagePrice.externalPriceId + name = newFloatingPackagePrice.name + billableMetricId = newFloatingPackagePrice.billableMetricId + itemId = newFloatingPackagePrice.itemId + billedInAdvance = newFloatingPackagePrice.billedInAdvance + fixedPriceQuantity = newFloatingPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingPackagePrice.invoiceGroupingKey + cadence = newFloatingPackagePrice.cadence + billingCycleConfiguration = newFloatingPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingPackagePrice.invoicingCycleConfiguration - this.conversionRate = newFloatingPackagePrice.conversionRate - this.modelType = newFloatingPackagePrice.modelType - this.packageConfig = newFloatingPackagePrice.packageConfig - this.currency = newFloatingPackagePrice.currency - additionalProperties(newFloatingPackagePrice.additionalProperties) + conversionRate = newFloatingPackagePrice.conversionRate + modelType = newFloatingPackagePrice.modelType + packageConfig = newFloatingPackagePrice.packageConfig + currency = newFloatingPackagePrice.currency + additionalProperties = + newFloatingPackagePrice.additionalProperties.toMutableMap() } /** @@ -4371,75 +3821,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -4447,37 +3854,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -4485,16 +3872,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -4503,66 +3880,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun packageConfig(packageConfig: PackageConfig) = - packageConfig(JsonField.of(packageConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("package_config") - @ExcludeMissing - fun packageConfig(packageConfig: JsonField) = apply { + fun packageConfig(packageConfig: PackageConfig) = apply { this.packageConfig = packageConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4570,23 +3912,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingPackagePrice = NewFloatingPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageConfig) { + "`packageConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -4725,49 +4077,29 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageConfig.Builder::class) @NoAutoDetect class PackageConfig + @JsonCreator private constructor( - private val packageAmount: JsonField, - private val packageSize: JsonField, - private val additionalProperties: Map, + @JsonProperty("package_amount") private val packageAmount: String, + @JsonProperty("package_size") private val packageSize: Long, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** A currency amount to rate usage by */ - fun packageAmount(): String = packageAmount.getRequired("package_amount") - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - fun packageSize(): Long = packageSize.getRequired("package_size") - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun _packageAmount() = packageAmount + @JsonProperty("package_amount") fun packageAmount(): String = packageAmount /** * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - @JsonProperty("package_size") @ExcludeMissing fun _packageSize() = packageSize + @JsonProperty("package_size") fun packageSize(): Long = packageSize @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageConfig = apply { - if (!validated) { - packageAmount() - packageSize() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4777,26 +4109,20 @@ constructor( class Builder { - private var packageAmount: JsonField = JsonMissing.of() - private var packageSize: JsonField = JsonMissing.of() + private var packageAmount: String? = null + private var packageSize: Long? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(packageConfig: PackageConfig) = apply { - this.packageAmount = packageConfig.packageAmount - this.packageSize = packageConfig.packageSize - additionalProperties(packageConfig.additionalProperties) + packageAmount = packageConfig.packageAmount + packageSize = packageConfig.packageSize + additionalProperties = packageConfig.additionalProperties.toMutableMap() } /** A currency amount to rate usage by */ - fun packageAmount(packageAmount: String) = - packageAmount(JsonField.of(packageAmount)) - - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun packageAmount(packageAmount: JsonField) = apply { + fun packageAmount(packageAmount: String) = apply { this.packageAmount = packageAmount } @@ -4804,37 +4130,40 @@ constructor( * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - fun packageSize(packageSize: Long) = packageSize(JsonField.of(packageSize)) - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - @JsonProperty("package_size") - @ExcludeMissing - fun packageSize(packageSize: JsonField) = apply { + fun packageSize(packageSize: Long) = apply { this.packageSize = packageSize } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageConfig = PackageConfig( - packageAmount, - packageSize, + checkNotNull(packageAmount) { + "`packageAmount` is required but was not set" + }, + checkNotNull(packageSize) { + "`packageSize` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -4861,43 +4190,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4907,57 +4219,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -5043,43 +4354,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5089,8 +4383,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -5098,49 +4392,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -5227,25 +4520,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5260,24 +4546,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -5316,208 +4609,108 @@ constructor( "NewFloatingPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageConfig=$packageConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingMatrixPrice.Builder::class) @NoAutoDetect class NewFloatingMatrixPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val matrixConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_config") private val matrixConfig: MatrixConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun matrixConfig(): MatrixConfig = matrixConfig.getRequired("matrix_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("matrix_config") @ExcludeMissing fun _matrixConfig() = matrixConfig + @JsonProperty("matrix_config") fun matrixConfig(): MatrixConfig = matrixConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingMatrixPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - matrixConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5527,46 +4720,43 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var matrixConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var matrixConfig: MatrixConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newFloatingMatrixPrice: NewFloatingMatrixPrice) = apply { - this.metadata = newFloatingMatrixPrice.metadata - this.externalPriceId = newFloatingMatrixPrice.externalPriceId - this.name = newFloatingMatrixPrice.name - this.billableMetricId = newFloatingMatrixPrice.billableMetricId - this.itemId = newFloatingMatrixPrice.itemId - this.billedInAdvance = newFloatingMatrixPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingMatrixPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingMatrixPrice.invoiceGroupingKey - this.cadence = newFloatingMatrixPrice.cadence - this.billingCycleConfiguration = - newFloatingMatrixPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + metadata = newFloatingMatrixPrice.metadata + externalPriceId = newFloatingMatrixPrice.externalPriceId + name = newFloatingMatrixPrice.name + billableMetricId = newFloatingMatrixPrice.billableMetricId + itemId = newFloatingMatrixPrice.itemId + billedInAdvance = newFloatingMatrixPrice.billedInAdvance + fixedPriceQuantity = newFloatingMatrixPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingMatrixPrice.invoiceGroupingKey + cadence = newFloatingMatrixPrice.cadence + billingCycleConfiguration = newFloatingMatrixPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingMatrixPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingMatrixPrice.conversionRate - this.modelType = newFloatingMatrixPrice.modelType - this.matrixConfig = newFloatingMatrixPrice.matrixConfig - this.currency = newFloatingMatrixPrice.currency - additionalProperties(newFloatingMatrixPrice.additionalProperties) + conversionRate = newFloatingMatrixPrice.conversionRate + modelType = newFloatingMatrixPrice.modelType + matrixConfig = newFloatingMatrixPrice.matrixConfig + currency = newFloatingMatrixPrice.currency + additionalProperties = + newFloatingMatrixPrice.additionalProperties.toMutableMap() } /** @@ -5574,75 +4764,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -5650,37 +4797,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -5688,16 +4815,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -5706,66 +4823,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun matrixConfig(matrixConfig: MatrixConfig) = - matrixConfig(JsonField.of(matrixConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("matrix_config") - @ExcludeMissing - fun matrixConfig(matrixConfig: JsonField) = apply { + fun matrixConfig(matrixConfig: MatrixConfig) = apply { this.matrixConfig = matrixConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5773,23 +4855,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } - fun build(): NewFloatingMatrixPrice = - NewFloatingMatrixPrice( + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + fun build(): NewFloatingMatrixPrice = + NewFloatingMatrixPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - matrixConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(matrixConfig) { + "`matrixConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -5876,61 +4968,35 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensions: JsonField>, - private val defaultUnitAmount: JsonField, - private val matrixValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("default_unit_amount") private val defaultUnitAmount: String, + @JsonProperty("matrix_values") private val matrixValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** One or two event property values to evaluate matrix groups by */ - fun dimensions(): List = dimensions.getRequired("dimensions") - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - fun defaultUnitAmount(): String = - defaultUnitAmount.getRequired("default_unit_amount") - - /** Matrix values for specified matrix grouping keys */ - fun matrixValues(): List = - matrixValues.getRequired("matrix_values") - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") @ExcludeMissing fun _dimensions() = dimensions + @JsonProperty("dimensions") fun dimensions(): List = dimensions /** * Default per unit rate for any usage not bucketed into a specified * matrix_value */ @JsonProperty("default_unit_amount") - @ExcludeMissing - fun _defaultUnitAmount() = defaultUnitAmount + fun defaultUnitAmount(): String = defaultUnitAmount /** Matrix values for specified matrix grouping keys */ @JsonProperty("matrix_values") - @ExcludeMissing - fun _matrixValues() = matrixValues + fun matrixValues(): List = matrixValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixConfig = apply { - if (!validated) { - dimensions() - defaultUnitAmount() - matrixValues().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5940,28 +5006,22 @@ constructor( class Builder { - private var dimensions: JsonField> = JsonMissing.of() - private var defaultUnitAmount: JsonField = JsonMissing.of() - private var matrixValues: JsonField> = JsonMissing.of() + private var dimensions: List? = null + private var defaultUnitAmount: String? = null + private var matrixValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensions = matrixConfig.dimensions - this.defaultUnitAmount = matrixConfig.defaultUnitAmount - this.matrixValues = matrixConfig.matrixValues - additionalProperties(matrixConfig.additionalProperties) + dimensions = matrixConfig.dimensions.toMutableList() + defaultUnitAmount = matrixConfig.defaultUnitAmount + matrixValues = matrixConfig.matrixValues.toMutableList() + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ - fun dimensions(dimensions: List) = - dimensions(JsonField.of(dimensions)) - - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") - @ExcludeMissing - fun dimensions(dimensions: JsonField>) = apply { + fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } @@ -5969,78 +5029,68 @@ constructor( * Default per unit rate for any usage not bucketed into a specified * matrix_value */ - fun defaultUnitAmount(defaultUnitAmount: String) = - defaultUnitAmount(JsonField.of(defaultUnitAmount)) - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - @JsonProperty("default_unit_amount") - @ExcludeMissing - fun defaultUnitAmount(defaultUnitAmount: JsonField) = apply { + fun defaultUnitAmount(defaultUnitAmount: String) = apply { this.defaultUnitAmount = defaultUnitAmount } /** Matrix values for specified matrix grouping keys */ - fun matrixValues(matrixValues: List) = - matrixValues(JsonField.of(matrixValues)) - - /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") - @ExcludeMissing - fun matrixValues(matrixValues: JsonField>) = apply { + fun matrixValues(matrixValues: List) = apply { this.matrixValues = matrixValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( - dimensions.map { it.toImmutable() }, - defaultUnitAmount, - matrixValues.map { it.toImmutable() }, + checkNotNull(dimensions) { + "`dimensions` is required but was not set" + } + .toImmutable(), + checkNotNull(defaultUnitAmount) { + "`defaultUnitAmount` is required but was not set" + }, + checkNotNull(matrixValues) { + "`matrixValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonProperty("dimension_values") + private val dimensionValues: List, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Unit price for the specified dimension_values */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - fun dimensionValues(): List = - dimensionValues.getRequired("dimension_values") - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount /** * One or two matrix keys to filter usage to this Matrix value by. For @@ -6048,21 +5098,12 @@ constructor( * cloud region and an instance tier. */ @JsonProperty("dimension_values") - @ExcludeMissing - fun _dimensionValues() = dimensionValues + fun dimensionValues(): List = dimensionValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixValue = apply { - if (!validated) { - unitAmount() - dimensionValues() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6072,26 +5113,21 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() - private var dimensionValues: JsonField> = JsonMissing.of() + private var unitAmount: String? = null + private var dimensionValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues.toMutableList() + additionalProperties = + matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } @@ -6100,39 +5136,41 @@ constructor( * example, ["region", "tier"] could be used to filter cloud usage by a * cloud region and an instance tier. */ - fun dimensionValues(dimensionValues: List) = - dimensionValues(JsonField.of(dimensionValues)) - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - @JsonProperty("dimension_values") - @ExcludeMissing - fun dimensionValues(dimensionValues: JsonField>) = apply { + fun dimensionValues(dimensionValues: List) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( - unitAmount, - dimensionValues.map { it.toImmutable() }, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + checkNotNull(dimensionValues) { + "`dimensionValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } @@ -6229,43 +5267,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6275,57 +5296,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -6411,43 +5431,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6457,8 +5460,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -6466,49 +5469,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -6595,25 +5597,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6628,24 +5623,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -6684,211 +5686,111 @@ constructor( "NewFloatingMatrixPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixConfig=$matrixConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingMatrixWithAllocationPrice.Builder::class) @NoAutoDetect class NewFloatingMatrixWithAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val matrixWithAllocationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_with_allocation_config") + private val matrixWithAllocationConfig: MatrixWithAllocationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun matrixWithAllocationConfig(): MatrixWithAllocationConfig = - matrixWithAllocationConfig.getRequired("matrix_with_allocation_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("matrix_with_allocation_config") - @ExcludeMissing - fun _matrixWithAllocationConfig() = matrixWithAllocationConfig + fun matrixWithAllocationConfig(): MatrixWithAllocationConfig = + matrixWithAllocationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingMatrixWithAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - matrixWithAllocationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6898,55 +5800,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var matrixWithAllocationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var matrixWithAllocationConfig: MatrixWithAllocationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingMatrixWithAllocationPrice: NewFloatingMatrixWithAllocationPrice ) = apply { - this.metadata = newFloatingMatrixWithAllocationPrice.metadata - this.externalPriceId = newFloatingMatrixWithAllocationPrice.externalPriceId - this.name = newFloatingMatrixWithAllocationPrice.name - this.billableMetricId = - newFloatingMatrixWithAllocationPrice.billableMetricId - this.itemId = newFloatingMatrixWithAllocationPrice.itemId - this.billedInAdvance = newFloatingMatrixWithAllocationPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingMatrixWithAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingMatrixWithAllocationPrice.invoiceGroupingKey - this.cadence = newFloatingMatrixWithAllocationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingMatrixWithAllocationPrice.metadata + externalPriceId = newFloatingMatrixWithAllocationPrice.externalPriceId + name = newFloatingMatrixWithAllocationPrice.name + billableMetricId = newFloatingMatrixWithAllocationPrice.billableMetricId + itemId = newFloatingMatrixWithAllocationPrice.itemId + billedInAdvance = newFloatingMatrixWithAllocationPrice.billedInAdvance + fixedPriceQuantity = newFloatingMatrixWithAllocationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingMatrixWithAllocationPrice.invoiceGroupingKey + cadence = newFloatingMatrixWithAllocationPrice.cadence + billingCycleConfiguration = newFloatingMatrixWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingMatrixWithAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingMatrixWithAllocationPrice.conversionRate - this.modelType = newFloatingMatrixWithAllocationPrice.modelType - this.matrixWithAllocationConfig = + conversionRate = newFloatingMatrixWithAllocationPrice.conversionRate + modelType = newFloatingMatrixWithAllocationPrice.modelType + matrixWithAllocationConfig = newFloatingMatrixWithAllocationPrice.matrixWithAllocationConfig - this.currency = newFloatingMatrixWithAllocationPrice.currency - additionalProperties( - newFloatingMatrixWithAllocationPrice.additionalProperties - ) + currency = newFloatingMatrixWithAllocationPrice.currency + additionalProperties = + newFloatingMatrixWithAllocationPrice.additionalProperties.toMutableMap() } /** @@ -6954,75 +5848,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -7030,37 +5881,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -7068,16 +5899,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -7086,67 +5907,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun matrixWithAllocationConfig( matrixWithAllocationConfig: MatrixWithAllocationConfig - ) = matrixWithAllocationConfig(JsonField.of(matrixWithAllocationConfig)) - - @JsonProperty("matrix_with_allocation_config") - @ExcludeMissing - fun matrixWithAllocationConfig( - matrixWithAllocationConfig: JsonField ) = apply { this.matrixWithAllocationConfig = matrixWithAllocationConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -7154,23 +5939,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingMatrixWithAllocationPrice = NewFloatingMatrixWithAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - matrixWithAllocationConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(matrixWithAllocationConfig) { + "`matrixWithAllocationConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -7257,69 +6052,39 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixWithAllocationConfig.Builder::class) @NoAutoDetect class MatrixWithAllocationConfig + @JsonCreator private constructor( - private val dimensions: JsonField>, - private val defaultUnitAmount: JsonField, - private val matrixValues: JsonField>, - private val allocation: JsonField, - private val additionalProperties: Map, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("default_unit_amount") private val defaultUnitAmount: String, + @JsonProperty("matrix_values") private val matrixValues: List, + @JsonProperty("allocation") private val allocation: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** One or two event property values to evaluate matrix groups by */ - fun dimensions(): List = dimensions.getRequired("dimensions") - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - fun defaultUnitAmount(): String = - defaultUnitAmount.getRequired("default_unit_amount") - - /** Matrix values for specified matrix grouping keys */ - fun matrixValues(): List = - matrixValues.getRequired("matrix_values") - - /** Allocation to be used to calculate the price */ - fun allocation(): Double = allocation.getRequired("allocation") - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") @ExcludeMissing fun _dimensions() = dimensions + @JsonProperty("dimensions") fun dimensions(): List = dimensions /** * Default per unit rate for any usage not bucketed into a specified * matrix_value */ @JsonProperty("default_unit_amount") - @ExcludeMissing - fun _defaultUnitAmount() = defaultUnitAmount + fun defaultUnitAmount(): String = defaultUnitAmount /** Matrix values for specified matrix grouping keys */ @JsonProperty("matrix_values") - @ExcludeMissing - fun _matrixValues() = matrixValues + fun matrixValues(): List = matrixValues /** Allocation to be used to calculate the price */ - @JsonProperty("allocation") @ExcludeMissing fun _allocation() = allocation + @JsonProperty("allocation") fun allocation(): Double = allocation @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixWithAllocationConfig = apply { - if (!validated) { - dimensions() - defaultUnitAmount() - matrixValues().forEach { it.validate() } - allocation() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7329,34 +6094,27 @@ constructor( class Builder { - private var dimensions: JsonField> = JsonMissing.of() - private var defaultUnitAmount: JsonField = JsonMissing.of() - private var matrixValues: JsonField> = JsonMissing.of() - private var allocation: JsonField = JsonMissing.of() + private var dimensions: List? = null + private var defaultUnitAmount: String? = null + private var matrixValues: List? = null + private var allocation: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixWithAllocationConfig: MatrixWithAllocationConfig) = apply { - this.dimensions = matrixWithAllocationConfig.dimensions - this.defaultUnitAmount = - matrixWithAllocationConfig.defaultUnitAmount - this.matrixValues = matrixWithAllocationConfig.matrixValues - this.allocation = matrixWithAllocationConfig.allocation - additionalProperties( - matrixWithAllocationConfig.additionalProperties - ) + dimensions = matrixWithAllocationConfig.dimensions.toMutableList() + defaultUnitAmount = matrixWithAllocationConfig.defaultUnitAmount + matrixValues = + matrixWithAllocationConfig.matrixValues.toMutableList() + allocation = matrixWithAllocationConfig.allocation + additionalProperties = + matrixWithAllocationConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ - fun dimensions(dimensions: List) = - dimensions(JsonField.of(dimensions)) - - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") - @ExcludeMissing - fun dimensions(dimensions: JsonField>) = apply { + fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } @@ -7364,89 +6122,74 @@ constructor( * Default per unit rate for any usage not bucketed into a specified * matrix_value */ - fun defaultUnitAmount(defaultUnitAmount: String) = - defaultUnitAmount(JsonField.of(defaultUnitAmount)) - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - @JsonProperty("default_unit_amount") - @ExcludeMissing - fun defaultUnitAmount(defaultUnitAmount: JsonField) = apply { + fun defaultUnitAmount(defaultUnitAmount: String) = apply { this.defaultUnitAmount = defaultUnitAmount } /** Matrix values for specified matrix grouping keys */ - fun matrixValues(matrixValues: List) = - matrixValues(JsonField.of(matrixValues)) - - /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") - @ExcludeMissing - fun matrixValues(matrixValues: JsonField>) = apply { + fun matrixValues(matrixValues: List) = apply { this.matrixValues = matrixValues } /** Allocation to be used to calculate the price */ - fun allocation(allocation: Double) = allocation(JsonField.of(allocation)) - - /** Allocation to be used to calculate the price */ - @JsonProperty("allocation") - @ExcludeMissing - fun allocation(allocation: JsonField) = apply { - this.allocation = allocation - } + fun allocation(allocation: Double) = apply { this.allocation = allocation } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixWithAllocationConfig = MatrixWithAllocationConfig( - dimensions.map { it.toImmutable() }, - defaultUnitAmount, - matrixValues.map { it.toImmutable() }, - allocation, + checkNotNull(dimensions) { + "`dimensions` is required but was not set" + } + .toImmutable(), + checkNotNull(defaultUnitAmount) { + "`defaultUnitAmount` is required but was not set" + }, + checkNotNull(matrixValues) { + "`matrixValues` is required but was not set" + } + .toImmutable(), + checkNotNull(allocation) { + "`allocation` is required but was not set" + }, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonProperty("dimension_values") + private val dimensionValues: List, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Unit price for the specified dimension_values */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - fun dimensionValues(): List = - dimensionValues.getRequired("dimension_values") - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount /** * One or two matrix keys to filter usage to this Matrix value by. For @@ -7454,21 +6197,12 @@ constructor( * cloud region and an instance tier. */ @JsonProperty("dimension_values") - @ExcludeMissing - fun _dimensionValues() = dimensionValues + fun dimensionValues(): List = dimensionValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixValue = apply { - if (!validated) { - unitAmount() - dimensionValues() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7478,26 +6212,21 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() - private var dimensionValues: JsonField> = JsonMissing.of() + private var unitAmount: String? = null + private var dimensionValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues.toMutableList() + additionalProperties = + matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } @@ -7506,39 +6235,41 @@ constructor( * example, ["region", "tier"] could be used to filter cloud usage by a * cloud region and an instance tier. */ - fun dimensionValues(dimensionValues: List) = - dimensionValues(JsonField.of(dimensionValues)) - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - @JsonProperty("dimension_values") - @ExcludeMissing - fun dimensionValues(dimensionValues: JsonField>) = apply { + fun dimensionValues(dimensionValues: List) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( - unitAmount, - dimensionValues.map { it.toImmutable() }, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + checkNotNull(dimensionValues) { + "`dimensionValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } @@ -7635,43 +6366,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7681,57 +6395,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -7817,43 +6530,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7863,8 +6559,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -7872,49 +6568,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -8001,25 +6696,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8034,24 +6722,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -8090,208 +6785,108 @@ constructor( "NewFloatingMatrixWithAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixWithAllocationConfig=$matrixWithAllocationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredPrice.Builder::class) @NoAutoDetect class NewFloatingTieredPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_config") private val tieredConfig: TieredConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredConfig(): TieredConfig = tieredConfig.getRequired("tiered_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("tiered_config") @ExcludeMissing fun _tieredConfig() = tieredConfig + @JsonProperty("tiered_config") fun tieredConfig(): TieredConfig = tieredConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingTieredPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8301,46 +6896,43 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredConfig: TieredConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newFloatingTieredPrice: NewFloatingTieredPrice) = apply { - this.metadata = newFloatingTieredPrice.metadata - this.externalPriceId = newFloatingTieredPrice.externalPriceId - this.name = newFloatingTieredPrice.name - this.billableMetricId = newFloatingTieredPrice.billableMetricId - this.itemId = newFloatingTieredPrice.itemId - this.billedInAdvance = newFloatingTieredPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingTieredPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingTieredPrice.invoiceGroupingKey - this.cadence = newFloatingTieredPrice.cadence - this.billingCycleConfiguration = - newFloatingTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + metadata = newFloatingTieredPrice.metadata + externalPriceId = newFloatingTieredPrice.externalPriceId + name = newFloatingTieredPrice.name + billableMetricId = newFloatingTieredPrice.billableMetricId + itemId = newFloatingTieredPrice.itemId + billedInAdvance = newFloatingTieredPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredPrice.invoiceGroupingKey + cadence = newFloatingTieredPrice.cadence + billingCycleConfiguration = newFloatingTieredPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingTieredPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredPrice.conversionRate - this.modelType = newFloatingTieredPrice.modelType - this.tieredConfig = newFloatingTieredPrice.tieredConfig - this.currency = newFloatingTieredPrice.currency - additionalProperties(newFloatingTieredPrice.additionalProperties) + conversionRate = newFloatingTieredPrice.conversionRate + modelType = newFloatingTieredPrice.modelType + tieredConfig = newFloatingTieredPrice.tieredConfig + currency = newFloatingTieredPrice.currency + additionalProperties = + newFloatingTieredPrice.additionalProperties.toMutableMap() } /** @@ -8348,75 +6940,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -8424,37 +6973,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -8462,16 +6991,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -8480,66 +6999,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField - ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } + ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredConfig(tieredConfig: TieredConfig) = - tieredConfig(JsonField.of(tieredConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_config") - @ExcludeMissing - fun tieredConfig(tieredConfig: JsonField) = apply { + fun tieredConfig(tieredConfig: TieredConfig) = apply { this.tieredConfig = tieredConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8547,23 +7031,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredPrice = NewFloatingTieredPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredConfig) { + "`tieredConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -8702,33 +7196,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredConfig.Builder::class) @NoAutoDetect class TieredConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(): List = tiers.getRequired("tiers") - /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8738,98 +7221,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredConfig: TieredConfig) = apply { - this.tiers = tieredConfig.tiers - additionalProperties(tieredConfig.additionalProperties) + tiers = tieredConfig.tiers.toMutableList() + additionalProperties = tieredConfig.additionalProperties.toMutableMap() } /** * Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for rating based on total usage quantities into the specified tier - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredConfig = TieredConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") private val firstUnit: Double, + @JsonProperty("last_unit") private val lastUnit: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Inclusive tier starting value */ - fun firstUnit(): Double = firstUnit.getRequired("first_unit") + @JsonProperty("first_unit") fun firstUnit(): Double = firstUnit /** * Exclusive tier ending value. If null, this is treated as the last tier */ - fun lastUnit(): Optional = - Optional.ofNullable(lastUnit.getNullable("last_unit")) + @JsonProperty("last_unit") + fun lastUnit(): Optional = Optional.ofNullable(lastUnit) /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** Inclusive tier starting value */ - @JsonProperty("first_unit") @ExcludeMissing fun _firstUnit() = firstUnit - - /** - * Exclusive tier ending value. If null, this is treated as the last tier - */ - @JsonProperty("last_unit") @ExcludeMissing fun _lastUnit() = lastUnit - - /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - firstUnit() - lastUnit() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8839,77 +7303,65 @@ constructor( class Builder { - private var firstUnit: JsonField = JsonMissing.of() - private var lastUnit: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var firstUnit: Double? = null + private var lastUnit: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.firstUnit = tier.firstUnit - this.lastUnit = tier.lastUnit - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + firstUnit = tier.firstUnit + lastUnit = tier.lastUnit + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) - - /** Inclusive tier starting value */ - @JsonProperty("first_unit") - @ExcludeMissing - fun firstUnit(firstUnit: JsonField) = apply { - this.firstUnit = firstUnit - } - - /** - * Exclusive tier ending value. If null, this is treated as the last - * tier - */ - fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) + fun firstUnit(firstUnit: Double) = apply { this.firstUnit = firstUnit } /** * Exclusive tier ending value. If null, this is treated as the last * tier */ - @JsonProperty("last_unit") - @ExcludeMissing - fun lastUnit(lastUnit: JsonField) = apply { - this.lastUnit = lastUnit - } + fun lastUnit(lastUnit: Double) = apply { this.lastUnit = lastUnit } /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - firstUnit, + checkNotNull(firstUnit) { + "`firstUnit` is required but was not set" + }, lastUnit, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -8954,43 +7406,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9000,57 +7435,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -9136,43 +7570,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9182,8 +7599,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -9191,49 +7608,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -9320,25 +7736,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9353,24 +7762,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -9409,211 +7825,109 @@ constructor( "NewFloatingTieredPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredConfig=$tieredConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredBpsPrice.Builder::class) @NoAutoDetect class NewFloatingTieredBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredBpsConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_bps_config") private val tieredBpsConfig: TieredBpsConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredBpsConfig(): TieredBpsConfig = - tieredBpsConfig.getRequired("tiered_bps_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun _tieredBpsConfig() = tieredBpsConfig + fun tieredBpsConfig(): TieredBpsConfig = tieredBpsConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingTieredBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredBpsConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9623,47 +7937,45 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredBpsConfig: TieredBpsConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newFloatingTieredBpsPrice: NewFloatingTieredBpsPrice) = apply { - this.metadata = newFloatingTieredBpsPrice.metadata - this.externalPriceId = newFloatingTieredBpsPrice.externalPriceId - this.name = newFloatingTieredBpsPrice.name - this.billableMetricId = newFloatingTieredBpsPrice.billableMetricId - this.itemId = newFloatingTieredBpsPrice.itemId - this.billedInAdvance = newFloatingTieredBpsPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingTieredBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingTieredBpsPrice.invoiceGroupingKey - this.cadence = newFloatingTieredBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingTieredBpsPrice.metadata + externalPriceId = newFloatingTieredBpsPrice.externalPriceId + name = newFloatingTieredBpsPrice.name + billableMetricId = newFloatingTieredBpsPrice.billableMetricId + itemId = newFloatingTieredBpsPrice.itemId + billedInAdvance = newFloatingTieredBpsPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredBpsPrice.invoiceGroupingKey + cadence = newFloatingTieredBpsPrice.cadence + billingCycleConfiguration = newFloatingTieredBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingTieredBpsPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredBpsPrice.conversionRate - this.modelType = newFloatingTieredBpsPrice.modelType - this.tieredBpsConfig = newFloatingTieredBpsPrice.tieredBpsConfig - this.currency = newFloatingTieredBpsPrice.currency - additionalProperties(newFloatingTieredBpsPrice.additionalProperties) + conversionRate = newFloatingTieredBpsPrice.conversionRate + modelType = newFloatingTieredBpsPrice.modelType + tieredBpsConfig = newFloatingTieredBpsPrice.tieredBpsConfig + currency = newFloatingTieredBpsPrice.currency + additionalProperties = + newFloatingTieredBpsPrice.additionalProperties.toMutableMap() } /** @@ -9671,75 +7983,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -9747,37 +8016,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -9785,16 +8034,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -9803,66 +8042,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) + fun conversionRate(conversionRate: Double) = apply { + this.conversionRate = conversionRate + } - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { - this.conversionRate = conversionRate - } - - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = - tieredBpsConfig(JsonField.of(tieredBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun tieredBpsConfig(tieredBpsConfig: JsonField) = apply { + fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = apply { this.tieredBpsConfig = tieredBpsConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9870,23 +8074,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredBpsPrice = NewFloatingTieredBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredBpsConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredBpsConfig) { + "`tieredBpsConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -10025,39 +8239,25 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredBpsConfig.Builder::class) @NoAutoDetect class TieredBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10067,111 +8267,84 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredBpsConfig: TieredBpsConfig) = apply { - this.tiers = tieredBpsConfig.tiers - additionalProperties(tieredBpsConfig.additionalProperties) + tiers = tieredBpsConfig.tiers.toMutableList() + additionalProperties = + tieredBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredBpsConfig = TieredBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Inclusive tier starting value */ - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** Exclusive tier ending value */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Per-event basis point rate */ - fun bps(): Double = bps.getRequired("bps") - - /** Per unit maximum to charge */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** Exclusive tier ending value */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Per-event basis point rate */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Per unit maximum to charge */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - minimumAmount() - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10181,83 +8354,69 @@ constructor( class Builder { - private var minimumAmount: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var minimumAmount: String? = null + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.minimumAmount = tier.minimumAmount - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + minimumAmount = tier.minimumAmount + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** Exclusive tier ending value */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Exclusive tier ending value */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Per-event basis point rate */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Per-event basis point rate */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** Per unit maximum to charge */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** Per unit maximum to charge */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - minimumAmount, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -10303,43 +8462,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10349,57 +8491,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -10485,43 +8626,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10531,8 +8655,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -10540,49 +8664,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -10669,25 +8792,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10702,24 +8818,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -10758,208 +8881,108 @@ constructor( "NewFloatingTieredBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredBpsConfig=$tieredBpsConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingBpsPrice.Builder::class) @NoAutoDetect class NewFloatingBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bpsConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bps_config") private val bpsConfig: BpsConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bpsConfig(): BpsConfig = bpsConfig.getRequired("bps_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bps_config") @ExcludeMissing fun _bpsConfig() = bpsConfig + @JsonProperty("bps_config") fun bpsConfig(): BpsConfig = bpsConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bpsConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10969,46 +8992,43 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bpsConfig: BpsConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newFloatingBpsPrice: NewFloatingBpsPrice) = apply { - this.metadata = newFloatingBpsPrice.metadata - this.externalPriceId = newFloatingBpsPrice.externalPriceId - this.name = newFloatingBpsPrice.name - this.billableMetricId = newFloatingBpsPrice.billableMetricId - this.itemId = newFloatingBpsPrice.itemId - this.billedInAdvance = newFloatingBpsPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingBpsPrice.invoiceGroupingKey - this.cadence = newFloatingBpsPrice.cadence - this.billingCycleConfiguration = - newFloatingBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + metadata = newFloatingBpsPrice.metadata + externalPriceId = newFloatingBpsPrice.externalPriceId + name = newFloatingBpsPrice.name + billableMetricId = newFloatingBpsPrice.billableMetricId + itemId = newFloatingBpsPrice.itemId + billedInAdvance = newFloatingBpsPrice.billedInAdvance + fixedPriceQuantity = newFloatingBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingBpsPrice.invoiceGroupingKey + cadence = newFloatingBpsPrice.cadence + billingCycleConfiguration = newFloatingBpsPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingBpsPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingBpsPrice.conversionRate - this.modelType = newFloatingBpsPrice.modelType - this.bpsConfig = newFloatingBpsPrice.bpsConfig - this.currency = newFloatingBpsPrice.currency - additionalProperties(newFloatingBpsPrice.additionalProperties) + conversionRate = newFloatingBpsPrice.conversionRate + modelType = newFloatingBpsPrice.modelType + bpsConfig = newFloatingBpsPrice.bpsConfig + currency = newFloatingBpsPrice.currency + additionalProperties = + newFloatingBpsPrice.additionalProperties.toMutableMap() } /** @@ -11016,75 +9036,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -11092,37 +9069,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -11130,16 +9087,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -11148,65 +9095,29 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bpsConfig(bpsConfig: BpsConfig) = bpsConfig(JsonField.of(bpsConfig)) - - @JsonProperty("bps_config") - @ExcludeMissing - fun bpsConfig(bpsConfig: JsonField) = apply { - this.bpsConfig = bpsConfig - } + fun bpsConfig(bpsConfig: BpsConfig) = apply { this.bpsConfig = bpsConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11214,65 +9125,56 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingBpsPrice = NewFloatingBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bpsConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bpsConfig) { "`bpsConfig` is required but was not set" }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BpsConfig.Builder::class) @NoAutoDetect class BpsConfig + @JsonCreator private constructor( - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Basis point take rate per event */ - fun bps(): Double = bps.getRequired("bps") - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - - /** Basis point take rate per event */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Optional currency amount maximum to cap spend per event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BpsConfig = apply { - if (!validated) { - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11282,55 +9184,51 @@ constructor( class Builder { - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bpsConfig: BpsConfig) = apply { - this.bps = bpsConfig.bps - this.perUnitMaximum = bpsConfig.perUnitMaximum - additionalProperties(bpsConfig.additionalProperties) + bps = bpsConfig.bps + perUnitMaximum = bpsConfig.perUnitMaximum + additionalProperties = bpsConfig.additionalProperties.toMutableMap() } /** Basis point take rate per event */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis point take rate per event */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** Optional currency amount maximum to cap spend per event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BpsConfig = BpsConfig( - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -11492,43 +9390,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11538,57 +9419,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -11674,43 +9554,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11720,8 +9583,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -11729,49 +9592,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -11858,25 +9720,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11891,24 +9746,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -11947,210 +9809,108 @@ constructor( "NewFloatingBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bpsConfig=$bpsConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingBulkBpsPrice.Builder::class) @NoAutoDetect class NewFloatingBulkBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkBpsConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_bps_config") private val bulkBpsConfig: BulkBpsConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig.getRequired("bulk_bps_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun _bulkBpsConfig() = bulkBpsConfig + @JsonProperty("bulk_bps_config") fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingBulkBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkBpsConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12160,46 +9920,44 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkBpsConfig: BulkBpsConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newFloatingBulkBpsPrice: NewFloatingBulkBpsPrice) = apply { - this.metadata = newFloatingBulkBpsPrice.metadata - this.externalPriceId = newFloatingBulkBpsPrice.externalPriceId - this.name = newFloatingBulkBpsPrice.name - this.billableMetricId = newFloatingBulkBpsPrice.billableMetricId - this.itemId = newFloatingBulkBpsPrice.itemId - this.billedInAdvance = newFloatingBulkBpsPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingBulkBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingBulkBpsPrice.invoiceGroupingKey - this.cadence = newFloatingBulkBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingBulkBpsPrice.metadata + externalPriceId = newFloatingBulkBpsPrice.externalPriceId + name = newFloatingBulkBpsPrice.name + billableMetricId = newFloatingBulkBpsPrice.billableMetricId + itemId = newFloatingBulkBpsPrice.itemId + billedInAdvance = newFloatingBulkBpsPrice.billedInAdvance + fixedPriceQuantity = newFloatingBulkBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingBulkBpsPrice.invoiceGroupingKey + cadence = newFloatingBulkBpsPrice.cadence + billingCycleConfiguration = newFloatingBulkBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingBulkBpsPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingBulkBpsPrice.conversionRate - this.modelType = newFloatingBulkBpsPrice.modelType - this.bulkBpsConfig = newFloatingBulkBpsPrice.bulkBpsConfig - this.currency = newFloatingBulkBpsPrice.currency - additionalProperties(newFloatingBulkBpsPrice.additionalProperties) + conversionRate = newFloatingBulkBpsPrice.conversionRate + modelType = newFloatingBulkBpsPrice.modelType + bulkBpsConfig = newFloatingBulkBpsPrice.bulkBpsConfig + currency = newFloatingBulkBpsPrice.currency + additionalProperties = + newFloatingBulkBpsPrice.additionalProperties.toMutableMap() } /** @@ -12207,75 +9965,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -12283,37 +9998,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -12321,16 +10016,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -12339,66 +10024,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = - bulkBpsConfig(JsonField.of(bulkBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun bulkBpsConfig(bulkBpsConfig: JsonField) = apply { + fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = apply { this.bulkBpsConfig = bulkBpsConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12406,60 +10056,56 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingBulkBpsPrice = NewFloatingBulkBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkBpsConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkBpsConfig) { + "`bulkBpsConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkBpsConfig.Builder::class) @NoAutoDetect class BulkBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a single - * tier based on total volume - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single * tier based on total volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12469,101 +10115,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkBpsConfig: BulkBpsConfig) = apply { - this.tiers = bulkBpsConfig.tiers - additionalProperties(bulkBpsConfig.additionalProperties) + tiers = bulkBpsConfig.tiers.toMutableList() + additionalProperties = bulkBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a * single tier based on total volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a - * single tier based on total volume - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkBpsConfig = BulkBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for tier */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Basis points to rate on */ - fun bps(): Double = bps.getRequired("bps") - - /** The maximum amount to charge for any one event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Upper bound for tier */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Basis points to rate on */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** The maximum amount to charge for any one event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12573,69 +10197,59 @@ constructor( class Builder { - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for tier */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Upper bound for tier */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Basis points to rate on */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis points to rate on */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** The maximum amount to charge for any one event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** The maximum amount to charge for any one event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -12815,43 +10429,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12861,57 +10458,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -12997,43 +10593,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13043,8 +10622,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -13052,49 +10631,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -13181,25 +10759,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13214,24 +10785,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -13270,208 +10848,108 @@ constructor( "NewFloatingBulkBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkBpsConfig=$bulkBpsConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingBulkPrice.Builder::class) @NoAutoDetect class NewFloatingBulkPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_config") private val bulkConfig: BulkConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkConfig(): BulkConfig = bulkConfig.getRequired("bulk_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_config") @ExcludeMissing fun _bulkConfig() = bulkConfig + @JsonProperty("bulk_config") fun bulkConfig(): BulkConfig = bulkConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingBulkPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13481,46 +10959,43 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkConfig: BulkConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newFloatingBulkPrice: NewFloatingBulkPrice) = apply { - this.metadata = newFloatingBulkPrice.metadata - this.externalPriceId = newFloatingBulkPrice.externalPriceId - this.name = newFloatingBulkPrice.name - this.billableMetricId = newFloatingBulkPrice.billableMetricId - this.itemId = newFloatingBulkPrice.itemId - this.billedInAdvance = newFloatingBulkPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingBulkPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingBulkPrice.invoiceGroupingKey - this.cadence = newFloatingBulkPrice.cadence - this.billingCycleConfiguration = - newFloatingBulkPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + metadata = newFloatingBulkPrice.metadata + externalPriceId = newFloatingBulkPrice.externalPriceId + name = newFloatingBulkPrice.name + billableMetricId = newFloatingBulkPrice.billableMetricId + itemId = newFloatingBulkPrice.itemId + billedInAdvance = newFloatingBulkPrice.billedInAdvance + fixedPriceQuantity = newFloatingBulkPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingBulkPrice.invoiceGroupingKey + cadence = newFloatingBulkPrice.cadence + billingCycleConfiguration = newFloatingBulkPrice.billingCycleConfiguration + invoicingCycleConfiguration = newFloatingBulkPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingBulkPrice.conversionRate - this.modelType = newFloatingBulkPrice.modelType - this.bulkConfig = newFloatingBulkPrice.bulkConfig - this.currency = newFloatingBulkPrice.currency - additionalProperties(newFloatingBulkPrice.additionalProperties) + conversionRate = newFloatingBulkPrice.conversionRate + modelType = newFloatingBulkPrice.modelType + bulkConfig = newFloatingBulkPrice.bulkConfig + currency = newFloatingBulkPrice.currency + additionalProperties = + newFloatingBulkPrice.additionalProperties.toMutableMap() } /** @@ -13528,75 +11003,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -13604,37 +11036,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -13642,16 +11054,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -13660,65 +11062,29 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkConfig(bulkConfig: BulkConfig) = bulkConfig(JsonField.of(bulkConfig)) - - @JsonProperty("bulk_config") - @ExcludeMissing - fun bulkConfig(bulkConfig: JsonField) = apply { - this.bulkConfig = bulkConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun bulkConfig(bulkConfig: BulkConfig) = apply { this.bulkConfig = bulkConfig } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13726,54 +11092,51 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingBulkPrice = NewFloatingBulkPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkConfig) { "`bulkConfig` is required but was not set" }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkConfig.Builder::class) @NoAutoDetect class BulkConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Bulk tiers for rating based on total usage volume */ - fun tiers(): List = tiers.getRequired("tiers") - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13783,84 +11146,71 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkConfig: BulkConfig) = apply { - this.tiers = bulkConfig.tiers - additionalProperties(bulkConfig.additionalProperties) + tiers = bulkConfig.tiers.toMutableList() + additionalProperties = bulkConfig.additionalProperties.toMutableMap() } /** Bulk tiers for rating based on total usage volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkConfig = BulkConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumUnits: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_units") private val maximumUnits: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for this tier */ - fun maximumUnits(): Optional = - Optional.ofNullable(maximumUnits.getNullable("maximum_units")) - - /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Upper bound for this tier */ @JsonProperty("maximum_units") - @ExcludeMissing - fun _maximumUnits() = maximumUnits + fun maximumUnits(): Optional = Optional.ofNullable(maximumUnits) /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumUnits() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13870,59 +11220,56 @@ constructor( class Builder { - private var maximumUnits: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var maximumUnits: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumUnits = tier.maximumUnits - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + maximumUnits = tier.maximumUnits + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for this tier */ - fun maximumUnits(maximumUnits: Double) = - maximumUnits(JsonField.of(maximumUnits)) - - /** Upper bound for this tier */ - @JsonProperty("maximum_units") - @ExcludeMissing - fun maximumUnits(maximumUnits: JsonField) = apply { + fun maximumUnits(maximumUnits: Double) = apply { this.maximumUnits = maximumUnits } /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } - fun build(): Tier = - Tier( - maximumUnits, - unitAmount, + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + fun build(): Tier = + Tier( + maximumUnits, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14101,43 +11448,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14147,57 +11477,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14283,43 +11612,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14329,8 +11641,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -14338,49 +11650,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14467,25 +11778,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14500,24 +11804,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -14556,211 +11867,111 @@ constructor( "NewFloatingBulkPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkConfig=$bulkConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingThresholdTotalAmountPrice.Builder::class) @NoAutoDetect class NewFloatingThresholdTotalAmountPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val thresholdTotalAmountConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("threshold_total_amount_config") + private val thresholdTotalAmountConfig: ThresholdTotalAmountConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = - thresholdTotalAmountConfig.getRequired("threshold_total_amount_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun _thresholdTotalAmountConfig() = thresholdTotalAmountConfig + fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = + thresholdTotalAmountConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingThresholdTotalAmountPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - thresholdTotalAmountConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14770,55 +11981,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var thresholdTotalAmountConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var thresholdTotalAmountConfig: ThresholdTotalAmountConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingThresholdTotalAmountPrice: NewFloatingThresholdTotalAmountPrice ) = apply { - this.metadata = newFloatingThresholdTotalAmountPrice.metadata - this.externalPriceId = newFloatingThresholdTotalAmountPrice.externalPriceId - this.name = newFloatingThresholdTotalAmountPrice.name - this.billableMetricId = - newFloatingThresholdTotalAmountPrice.billableMetricId - this.itemId = newFloatingThresholdTotalAmountPrice.itemId - this.billedInAdvance = newFloatingThresholdTotalAmountPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingThresholdTotalAmountPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingThresholdTotalAmountPrice.invoiceGroupingKey - this.cadence = newFloatingThresholdTotalAmountPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingThresholdTotalAmountPrice.metadata + externalPriceId = newFloatingThresholdTotalAmountPrice.externalPriceId + name = newFloatingThresholdTotalAmountPrice.name + billableMetricId = newFloatingThresholdTotalAmountPrice.billableMetricId + itemId = newFloatingThresholdTotalAmountPrice.itemId + billedInAdvance = newFloatingThresholdTotalAmountPrice.billedInAdvance + fixedPriceQuantity = newFloatingThresholdTotalAmountPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingThresholdTotalAmountPrice.invoiceGroupingKey + cadence = newFloatingThresholdTotalAmountPrice.cadence + billingCycleConfiguration = newFloatingThresholdTotalAmountPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingThresholdTotalAmountPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingThresholdTotalAmountPrice.conversionRate - this.modelType = newFloatingThresholdTotalAmountPrice.modelType - this.thresholdTotalAmountConfig = + conversionRate = newFloatingThresholdTotalAmountPrice.conversionRate + modelType = newFloatingThresholdTotalAmountPrice.modelType + thresholdTotalAmountConfig = newFloatingThresholdTotalAmountPrice.thresholdTotalAmountConfig - this.currency = newFloatingThresholdTotalAmountPrice.currency - additionalProperties( - newFloatingThresholdTotalAmountPrice.additionalProperties - ) + currency = newFloatingThresholdTotalAmountPrice.currency + additionalProperties = + newFloatingThresholdTotalAmountPrice.additionalProperties.toMutableMap() } /** @@ -14826,75 +12029,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -14902,37 +12062,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -14940,16 +12080,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -14958,67 +12088,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun thresholdTotalAmountConfig( thresholdTotalAmountConfig: ThresholdTotalAmountConfig - ) = thresholdTotalAmountConfig(JsonField.of(thresholdTotalAmountConfig)) - - @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun thresholdTotalAmountConfig( - thresholdTotalAmountConfig: JsonField ) = apply { this.thresholdTotalAmountConfig = thresholdTotalAmountConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15026,23 +12120,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingThresholdTotalAmountPrice = NewFloatingThresholdTotalAmountPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - thresholdTotalAmountConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(thresholdTotalAmountConfig) { + "`thresholdTotalAmountConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -15181,25 +12285,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ThresholdTotalAmountConfig.Builder::class) @NoAutoDetect class ThresholdTotalAmountConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): ThresholdTotalAmountConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15215,26 +12312,32 @@ constructor( @JvmSynthetic internal fun from(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = apply { - additionalProperties( - thresholdTotalAmountConfig.additionalProperties - ) + additionalProperties = + thresholdTotalAmountConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ThresholdTotalAmountConfig = ThresholdTotalAmountConfig(additionalProperties.toImmutable()) } @@ -15261,43 +12364,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15307,57 +12393,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -15443,43 +12528,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15489,8 +12557,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -15498,49 +12566,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -15627,25 +12694,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15660,24 +12720,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -15716,211 +12783,110 @@ constructor( "NewFloatingThresholdTotalAmountPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, thresholdTotalAmountConfig=$thresholdTotalAmountConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredPackagePrice.Builder::class) @NoAutoDetect class NewFloatingTieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredPackageConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_package_config") + private val tieredPackageConfig: TieredPackageConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredPackageConfig(): TieredPackageConfig = - tieredPackageConfig.getRequired("tiered_package_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_package_config") - @ExcludeMissing - fun _tieredPackageConfig() = tieredPackageConfig + fun tieredPackageConfig(): TieredPackageConfig = tieredPackageConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingTieredPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredPackageConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15930,49 +12896,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredPackageConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredPackageConfig: TieredPackageConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingTieredPackagePrice: NewFloatingTieredPackagePrice ) = apply { - this.metadata = newFloatingTieredPackagePrice.metadata - this.externalPriceId = newFloatingTieredPackagePrice.externalPriceId - this.name = newFloatingTieredPackagePrice.name - this.billableMetricId = newFloatingTieredPackagePrice.billableMetricId - this.itemId = newFloatingTieredPackagePrice.itemId - this.billedInAdvance = newFloatingTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = newFloatingTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingTieredPackagePrice.invoiceGroupingKey - this.cadence = newFloatingTieredPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingTieredPackagePrice.metadata + externalPriceId = newFloatingTieredPackagePrice.externalPriceId + name = newFloatingTieredPackagePrice.name + billableMetricId = newFloatingTieredPackagePrice.billableMetricId + itemId = newFloatingTieredPackagePrice.itemId + billedInAdvance = newFloatingTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredPackagePrice.invoiceGroupingKey + cadence = newFloatingTieredPackagePrice.cadence + billingCycleConfiguration = newFloatingTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredPackagePrice.conversionRate - this.modelType = newFloatingTieredPackagePrice.modelType - this.tieredPackageConfig = newFloatingTieredPackagePrice.tieredPackageConfig - this.currency = newFloatingTieredPackagePrice.currency - additionalProperties(newFloatingTieredPackagePrice.additionalProperties) + conversionRate = newFloatingTieredPackagePrice.conversionRate + modelType = newFloatingTieredPackagePrice.modelType + tieredPackageConfig = newFloatingTieredPackagePrice.tieredPackageConfig + currency = newFloatingTieredPackagePrice.currency + additionalProperties = + newFloatingTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -15980,75 +12943,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -16056,37 +12976,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -16094,16 +12994,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -16112,67 +13002,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType + fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = apply { + this.tieredPackageConfig = tieredPackageConfig } - fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = - tieredPackageConfig(JsonField.of(tieredPackageConfig)) - - @JsonProperty("tiered_package_config") - @ExcludeMissing - fun tieredPackageConfig(tieredPackageConfig: JsonField) = - apply { - this.tieredPackageConfig = tieredPackageConfig - } - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16180,23 +13034,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredPackagePrice = NewFloatingTieredPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredPackageConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredPackageConfig) { + "`tieredPackageConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -16335,25 +13199,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageConfig.Builder::class) @NoAutoDetect class TieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredPackageConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16368,24 +13225,32 @@ constructor( @JvmSynthetic internal fun from(tieredPackageConfig: TieredPackageConfig) = apply { - additionalProperties(tieredPackageConfig.additionalProperties) + additionalProperties = + tieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageConfig = TieredPackageConfig(additionalProperties.toImmutable()) } @@ -16412,43 +13277,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16458,57 +13306,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -16594,43 +13441,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16640,8 +13470,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -16649,49 +13479,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -16778,25 +13607,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16811,24 +13633,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -16867,211 +13696,110 @@ constructor( "NewFloatingTieredPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredPackageConfig=$tieredPackageConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingGroupedTieredPrice.Builder::class) @NoAutoDetect class NewFloatingGroupedTieredPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedTieredConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_tiered_config") + private val groupedTieredConfig: GroupedTieredConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - fun name(): String = name.getRequired("name") + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ + @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ + @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - fun modelType(): ModelType = modelType.getRequired("model_type") + @JsonProperty("model_type") fun modelType(): ModelType = modelType - fun groupedTieredConfig(): GroupedTieredConfig = - groupedTieredConfig.getRequired("grouped_tiered_config") + @JsonProperty("grouped_tiered_config") + fun groupedTieredConfig(): GroupedTieredConfig = groupedTieredConfig /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId - - /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate - - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType - - @JsonProperty("grouped_tiered_config") - @ExcludeMissing - fun _groupedTieredConfig() = groupedTieredConfig - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingGroupedTieredPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedTieredConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17081,49 +13809,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedTieredConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedTieredConfig: GroupedTieredConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingGroupedTieredPrice: NewFloatingGroupedTieredPrice ) = apply { - this.metadata = newFloatingGroupedTieredPrice.metadata - this.externalPriceId = newFloatingGroupedTieredPrice.externalPriceId - this.name = newFloatingGroupedTieredPrice.name - this.billableMetricId = newFloatingGroupedTieredPrice.billableMetricId - this.itemId = newFloatingGroupedTieredPrice.itemId - this.billedInAdvance = newFloatingGroupedTieredPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingGroupedTieredPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingGroupedTieredPrice.invoiceGroupingKey - this.cadence = newFloatingGroupedTieredPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingGroupedTieredPrice.metadata + externalPriceId = newFloatingGroupedTieredPrice.externalPriceId + name = newFloatingGroupedTieredPrice.name + billableMetricId = newFloatingGroupedTieredPrice.billableMetricId + itemId = newFloatingGroupedTieredPrice.itemId + billedInAdvance = newFloatingGroupedTieredPrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedTieredPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingGroupedTieredPrice.invoiceGroupingKey + cadence = newFloatingGroupedTieredPrice.cadence + billingCycleConfiguration = newFloatingGroupedTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedTieredPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingGroupedTieredPrice.conversionRate - this.modelType = newFloatingGroupedTieredPrice.modelType - this.groupedTieredConfig = newFloatingGroupedTieredPrice.groupedTieredConfig - this.currency = newFloatingGroupedTieredPrice.currency - additionalProperties(newFloatingGroupedTieredPrice.additionalProperties) + conversionRate = newFloatingGroupedTieredPrice.conversionRate + modelType = newFloatingGroupedTieredPrice.modelType + groupedTieredConfig = newFloatingGroupedTieredPrice.groupedTieredConfig + currency = newFloatingGroupedTieredPrice.currency + additionalProperties = + newFloatingGroupedTieredPrice.additionalProperties.toMutableMap() } /** @@ -17131,75 +13856,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -17207,37 +13889,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -17245,16 +13907,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -17263,67 +13915,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType + fun groupedTieredConfig(groupedTieredConfig: GroupedTieredConfig) = apply { + this.groupedTieredConfig = groupedTieredConfig } - fun groupedTieredConfig(groupedTieredConfig: GroupedTieredConfig) = - groupedTieredConfig(JsonField.of(groupedTieredConfig)) - - @JsonProperty("grouped_tiered_config") - @ExcludeMissing - fun groupedTieredConfig(groupedTieredConfig: JsonField) = - apply { - this.groupedTieredConfig = groupedTieredConfig - } - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17331,23 +13947,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedTieredPrice = NewFloatingGroupedTieredPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedTieredConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedTieredConfig) { + "`groupedTieredConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -17434,25 +14060,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedTieredConfig.Builder::class) @NoAutoDetect class GroupedTieredConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedTieredConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17467,24 +14086,32 @@ constructor( @JvmSynthetic internal fun from(groupedTieredConfig: GroupedTieredConfig) = apply { - additionalProperties(groupedTieredConfig.additionalProperties) + additionalProperties = + groupedTieredConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedTieredConfig = GroupedTieredConfig(additionalProperties.toImmutable()) } @@ -17563,43 +14190,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17609,57 +14219,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -17745,43 +14354,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17791,8 +14383,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -17800,49 +14392,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -17929,25 +14520,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17962,24 +14546,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -18018,266 +14609,160 @@ constructor( "NewFloatingGroupedTieredPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedTieredConfig=$groupedTieredConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredWithMinimumPrice.Builder::class) @NoAutoDetect class NewFloatingTieredWithMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithMinimumConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_minimum_config") + private val tieredWithMinimumConfig: TieredWithMinimumConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - fun name(): String = name.getRequired("name") + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ + @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ + @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - fun modelType(): ModelType = modelType.getRequired("model_type") + @JsonProperty("model_type") fun modelType(): ModelType = modelType - fun tieredWithMinimumConfig(): TieredWithMinimumConfig = - tieredWithMinimumConfig.getRequired("tiered_with_minimum_config") + @JsonProperty("tiered_with_minimum_config") + fun tieredWithMinimumConfig(): TieredWithMinimumConfig = tieredWithMinimumConfig /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("currency") fun currency(): String = currency - /** An alias for the price. */ - @JsonProperty("external_price_id") + @JsonAnyGetter @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun _additionalProperties(): Map = additionalProperties - /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + fun toBuilder() = Builder().from(this) - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + companion object { - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JvmStatic fun builder() = Builder() + } - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + class Builder { - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate - - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType - - @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun _tieredWithMinimumConfig() = tieredWithMinimumConfig - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency - - @JsonAnyGetter - @ExcludeMissing - fun _additionalProperties(): Map = additionalProperties - - fun validate(): NewFloatingTieredWithMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithMinimumConfig().validate() - currency() - validated = true - } - } - - fun toBuilder() = Builder().from(this) - - companion object { - - @JvmStatic fun builder() = Builder() - } - - class Builder { - - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithMinimumConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var additionalProperties: MutableMap = mutableMapOf() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithMinimumConfig: TieredWithMinimumConfig? = null + private var currency: String? = null + private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingTieredWithMinimumPrice: NewFloatingTieredWithMinimumPrice ) = apply { - this.metadata = newFloatingTieredWithMinimumPrice.metadata - this.externalPriceId = newFloatingTieredWithMinimumPrice.externalPriceId - this.name = newFloatingTieredWithMinimumPrice.name - this.billableMetricId = newFloatingTieredWithMinimumPrice.billableMetricId - this.itemId = newFloatingTieredWithMinimumPrice.itemId - this.billedInAdvance = newFloatingTieredWithMinimumPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingTieredWithMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingTieredWithMinimumPrice.invoiceGroupingKey - this.cadence = newFloatingTieredWithMinimumPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingTieredWithMinimumPrice.metadata + externalPriceId = newFloatingTieredWithMinimumPrice.externalPriceId + name = newFloatingTieredWithMinimumPrice.name + billableMetricId = newFloatingTieredWithMinimumPrice.billableMetricId + itemId = newFloatingTieredWithMinimumPrice.itemId + billedInAdvance = newFloatingTieredWithMinimumPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredWithMinimumPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredWithMinimumPrice.invoiceGroupingKey + cadence = newFloatingTieredWithMinimumPrice.cadence + billingCycleConfiguration = newFloatingTieredWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingTieredWithMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredWithMinimumPrice.conversionRate - this.modelType = newFloatingTieredWithMinimumPrice.modelType - this.tieredWithMinimumConfig = + conversionRate = newFloatingTieredWithMinimumPrice.conversionRate + modelType = newFloatingTieredWithMinimumPrice.modelType + tieredWithMinimumConfig = newFloatingTieredWithMinimumPrice.tieredWithMinimumConfig - this.currency = newFloatingTieredWithMinimumPrice.currency - additionalProperties(newFloatingTieredWithMinimumPrice.additionalProperties) + currency = newFloatingTieredWithMinimumPrice.currency + additionalProperties = + newFloatingTieredWithMinimumPrice.additionalProperties.toMutableMap() } /** @@ -18285,75 +14770,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -18361,37 +14803,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -18399,16 +14821,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -18417,66 +14829,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithMinimumConfig(tieredWithMinimumConfig: TieredWithMinimumConfig) = - tieredWithMinimumConfig(JsonField.of(tieredWithMinimumConfig)) - - @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun tieredWithMinimumConfig( - tieredWithMinimumConfig: JsonField - ) = apply { this.tieredWithMinimumConfig = tieredWithMinimumConfig } - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.tieredWithMinimumConfig = tieredWithMinimumConfig + } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18484,23 +14862,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredWithMinimumPrice = NewFloatingTieredWithMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithMinimumConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithMinimumConfig) { + "`tieredWithMinimumConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -18639,25 +15027,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithMinimumConfig.Builder::class) @NoAutoDetect class TieredWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18673,24 +15054,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithMinimumConfig: TieredWithMinimumConfig) = apply { - additionalProperties(tieredWithMinimumConfig.additionalProperties) + additionalProperties = + tieredWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithMinimumConfig = TieredWithMinimumConfig(additionalProperties.toImmutable()) } @@ -18717,43 +15106,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18763,57 +15135,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -18899,43 +15270,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18945,8 +15299,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -18954,49 +15308,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -19083,25 +15436,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19116,24 +15462,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -19172,346 +15525,197 @@ constructor( "NewFloatingTieredWithMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithMinimumConfig=$tieredWithMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingPackageWithAllocationPrice.Builder::class) @NoAutoDetect class NewFloatingPackageWithAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageWithAllocationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_with_allocation_config") + private val packageWithAllocationConfig: PackageWithAllocationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - fun name(): String = name.getRequired("name") + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ + @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ + @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - fun modelType(): ModelType = modelType.getRequired("model_type") + @JsonProperty("model_type") fun modelType(): ModelType = modelType + @JsonProperty("package_with_allocation_config") fun packageWithAllocationConfig(): PackageWithAllocationConfig = - packageWithAllocationConfig.getRequired("package_with_allocation_config") + packageWithAllocationConfig /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("currency") fun currency(): String = currency - /** An alias for the price. */ - @JsonProperty("external_price_id") + @JsonAnyGetter @ExcludeMissing - fun _externalPriceId() = externalPriceId - - /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + fun _additionalProperties(): Map = additionalProperties - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun toBuilder() = Builder().from(this) - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + companion object { - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + @JvmStatic fun builder() = Builder() + } - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + class Builder { - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageWithAllocationConfig: PackageWithAllocationConfig? = null + private var currency: String? = null + private var additionalProperties: MutableMap = mutableMapOf() - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate - - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType - - @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun _packageWithAllocationConfig() = packageWithAllocationConfig - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency - - @JsonAnyGetter - @ExcludeMissing - fun _additionalProperties(): Map = additionalProperties - - fun validate(): NewFloatingPackageWithAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageWithAllocationConfig().validate() - currency() - validated = true - } - } - - fun toBuilder() = Builder().from(this) - - companion object { - - @JvmStatic fun builder() = Builder() - } - - class Builder { - - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageWithAllocationConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var additionalProperties: MutableMap = mutableMapOf() - - @JvmSynthetic - internal fun from( - newFloatingPackageWithAllocationPrice: NewFloatingPackageWithAllocationPrice - ) = apply { - this.metadata = newFloatingPackageWithAllocationPrice.metadata - this.externalPriceId = newFloatingPackageWithAllocationPrice.externalPriceId - this.name = newFloatingPackageWithAllocationPrice.name - this.billableMetricId = - newFloatingPackageWithAllocationPrice.billableMetricId - this.itemId = newFloatingPackageWithAllocationPrice.itemId - this.billedInAdvance = newFloatingPackageWithAllocationPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingPackageWithAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingPackageWithAllocationPrice.invoiceGroupingKey - this.cadence = newFloatingPackageWithAllocationPrice.cadence - this.billingCycleConfiguration = - newFloatingPackageWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = - newFloatingPackageWithAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingPackageWithAllocationPrice.conversionRate - this.modelType = newFloatingPackageWithAllocationPrice.modelType - this.packageWithAllocationConfig = - newFloatingPackageWithAllocationPrice.packageWithAllocationConfig - this.currency = newFloatingPackageWithAllocationPrice.currency - additionalProperties( - newFloatingPackageWithAllocationPrice.additionalProperties - ) - } - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) + @JvmSynthetic + internal fun from( + newFloatingPackageWithAllocationPrice: NewFloatingPackageWithAllocationPrice + ) = apply { + metadata = newFloatingPackageWithAllocationPrice.metadata + externalPriceId = newFloatingPackageWithAllocationPrice.externalPriceId + name = newFloatingPackageWithAllocationPrice.name + billableMetricId = newFloatingPackageWithAllocationPrice.billableMetricId + itemId = newFloatingPackageWithAllocationPrice.itemId + billedInAdvance = newFloatingPackageWithAllocationPrice.billedInAdvance + fixedPriceQuantity = + newFloatingPackageWithAllocationPrice.fixedPriceQuantity + invoiceGroupingKey = + newFloatingPackageWithAllocationPrice.invoiceGroupingKey + cadence = newFloatingPackageWithAllocationPrice.cadence + billingCycleConfiguration = + newFloatingPackageWithAllocationPrice.billingCycleConfiguration + invoicingCycleConfiguration = + newFloatingPackageWithAllocationPrice.invoicingCycleConfiguration + conversionRate = newFloatingPackageWithAllocationPrice.conversionRate + modelType = newFloatingPackageWithAllocationPrice.modelType + packageWithAllocationConfig = + newFloatingPackageWithAllocationPrice.packageWithAllocationConfig + currency = newFloatingPackageWithAllocationPrice.currency + additionalProperties = + newFloatingPackageWithAllocationPrice.additionalProperties + .toMutableMap() + } /** * User-specified key/value pairs for the resource. Individual keys can be * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -19519,37 +15723,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -19557,16 +15741,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -19575,67 +15749,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun packageWithAllocationConfig( packageWithAllocationConfig: PackageWithAllocationConfig - ) = packageWithAllocationConfig(JsonField.of(packageWithAllocationConfig)) - - @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun packageWithAllocationConfig( - packageWithAllocationConfig: JsonField ) = apply { this.packageWithAllocationConfig = packageWithAllocationConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19643,23 +15781,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingPackageWithAllocationPrice = NewFloatingPackageWithAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageWithAllocationConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageWithAllocationConfig) { + "`packageWithAllocationConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -19798,25 +15946,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageWithAllocationConfig.Builder::class) @NoAutoDetect class PackageWithAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageWithAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19833,24 +15974,32 @@ constructor( internal fun from( packageWithAllocationConfig: PackageWithAllocationConfig ) = apply { - additionalProperties(packageWithAllocationConfig.additionalProperties) + additionalProperties = + packageWithAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageWithAllocationConfig = PackageWithAllocationConfig(additionalProperties.toImmutable()) } @@ -19877,43 +16026,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19923,57 +16055,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -20059,43 +16190,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20105,8 +16219,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -20114,49 +16228,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -20243,25 +16356,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20276,24 +16382,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -20332,275 +16445,166 @@ constructor( "NewFloatingPackageWithAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageWithAllocationConfig=$packageWithAllocationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingTieredPackageWithMinimumPrice.Builder::class) @NoAutoDetect class NewFloatingTieredPackageWithMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredPackageWithMinimumConfig: - JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_package_with_minimum_config") + private val tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - fun name(): String = name.getRequired("name") + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) + @JsonProperty("billable_metric_id") + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) + @JsonProperty("billed_in_advance") + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) + @JsonProperty("invoice_grouping_key") + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ + @JsonProperty("billing_cycle_configuration") fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ + @JsonProperty("invoicing_cycle_configuration") fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + @JsonProperty("conversion_rate") + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - fun modelType(): ModelType = modelType.getRequired("model_type") + @JsonProperty("model_type") fun modelType(): ModelType = modelType + @JsonProperty("tiered_package_with_minimum_config") fun tieredPackageWithMinimumConfig(): TieredPackageWithMinimumConfig = - tieredPackageWithMinimumConfig.getRequired("tiered_package_with_minimum_config") + tieredPackageWithMinimumConfig /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId - - /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("currency") fun currency(): String = currency - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") + @JsonAnyGetter @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun _additionalProperties(): Map = additionalProperties - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + fun toBuilder() = Builder().from(this) - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + companion object { - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + @JvmStatic fun builder() = Builder() + } - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + class Builder { - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate - - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType - - @JsonProperty("tiered_package_with_minimum_config") - @ExcludeMissing - fun _tieredPackageWithMinimumConfig() = tieredPackageWithMinimumConfig - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency - - @JsonAnyGetter - @ExcludeMissing - fun _additionalProperties(): Map = additionalProperties - - fun validate(): NewFloatingTieredPackageWithMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredPackageWithMinimumConfig().validate() - currency() - validated = true - } - } - - fun toBuilder() = Builder().from(this) - - companion object { - - @JvmStatic fun builder() = Builder() - } - - class Builder { - - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredPackageWithMinimumConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var additionalProperties: MutableMap = mutableMapOf() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig? = + null + private var currency: String? = null + private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingTieredPackageWithMinimumPrice: NewFloatingTieredPackageWithMinimumPrice ) = apply { - this.metadata = newFloatingTieredPackageWithMinimumPrice.metadata - this.externalPriceId = - newFloatingTieredPackageWithMinimumPrice.externalPriceId - this.name = newFloatingTieredPackageWithMinimumPrice.name - this.billableMetricId = - newFloatingTieredPackageWithMinimumPrice.billableMetricId - this.itemId = newFloatingTieredPackageWithMinimumPrice.itemId - this.billedInAdvance = - newFloatingTieredPackageWithMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newFloatingTieredPackageWithMinimumPrice.metadata + externalPriceId = newFloatingTieredPackageWithMinimumPrice.externalPriceId + name = newFloatingTieredPackageWithMinimumPrice.name + billableMetricId = newFloatingTieredPackageWithMinimumPrice.billableMetricId + itemId = newFloatingTieredPackageWithMinimumPrice.itemId + billedInAdvance = newFloatingTieredPackageWithMinimumPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredPackageWithMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newFloatingTieredPackageWithMinimumPrice.invoiceGroupingKey - this.cadence = newFloatingTieredPackageWithMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newFloatingTieredPackageWithMinimumPrice.cadence + billingCycleConfiguration = newFloatingTieredPackageWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingTieredPackageWithMinimumPrice.invoicingCycleConfiguration - this.conversionRate = - newFloatingTieredPackageWithMinimumPrice.conversionRate - this.modelType = newFloatingTieredPackageWithMinimumPrice.modelType - this.tieredPackageWithMinimumConfig = + conversionRate = newFloatingTieredPackageWithMinimumPrice.conversionRate + modelType = newFloatingTieredPackageWithMinimumPrice.modelType + tieredPackageWithMinimumConfig = newFloatingTieredPackageWithMinimumPrice.tieredPackageWithMinimumConfig - this.currency = newFloatingTieredPackageWithMinimumPrice.currency - additionalProperties( + currency = newFloatingTieredPackageWithMinimumPrice.currency + additionalProperties = newFloatingTieredPackageWithMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -20608,75 +16612,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -20684,37 +16645,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -20722,16 +16663,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -20740,69 +16671,33 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredPackageWithMinimumConfig( tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig - ) = tieredPackageWithMinimumConfig(JsonField.of(tieredPackageWithMinimumConfig)) - - @JsonProperty("tiered_package_with_minimum_config") - @ExcludeMissing - fun tieredPackageWithMinimumConfig( - tieredPackageWithMinimumConfig: JsonField ) = apply { this.tieredPackageWithMinimumConfig = tieredPackageWithMinimumConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -20810,23 +16705,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredPackageWithMinimumPrice = NewFloatingTieredPackageWithMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredPackageWithMinimumConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredPackageWithMinimumConfig) { + "`tieredPackageWithMinimumConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -20966,25 +16871,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageWithMinimumConfig.Builder::class) @NoAutoDetect class TieredPackageWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredPackageWithMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21001,26 +16899,32 @@ constructor( internal fun from( tieredPackageWithMinimumConfig: TieredPackageWithMinimumConfig ) = apply { - additionalProperties( - tieredPackageWithMinimumConfig.additionalProperties - ) + additionalProperties = + tieredPackageWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageWithMinimumConfig = TieredPackageWithMinimumConfig(additionalProperties.toImmutable()) } @@ -21047,43 +16951,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21093,57 +16980,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -21229,43 +17115,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21275,8 +17144,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -21284,49 +17153,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -21413,25 +17281,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21446,24 +17307,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -21502,211 +17370,110 @@ constructor( "NewFloatingTieredPackageWithMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredPackageWithMinimumConfig=$tieredPackageWithMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingUnitWithPercentPrice.Builder::class) @NoAutoDetect class NewFloatingUnitWithPercentPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithPercentConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_percent_config") + private val unitWithPercentConfig: UnitWithPercentConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithPercentConfig(): UnitWithPercentConfig = - unitWithPercentConfig.getRequired("unit_with_percent_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun _unitWithPercentConfig() = unitWithPercentConfig + fun unitWithPercentConfig(): UnitWithPercentConfig = unitWithPercentConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingUnitWithPercentPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithPercentConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21716,50 +17483,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithPercentConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithPercentConfig: UnitWithPercentConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingUnitWithPercentPrice: NewFloatingUnitWithPercentPrice ) = apply { - this.metadata = newFloatingUnitWithPercentPrice.metadata - this.externalPriceId = newFloatingUnitWithPercentPrice.externalPriceId - this.name = newFloatingUnitWithPercentPrice.name - this.billableMetricId = newFloatingUnitWithPercentPrice.billableMetricId - this.itemId = newFloatingUnitWithPercentPrice.itemId - this.billedInAdvance = newFloatingUnitWithPercentPrice.billedInAdvance - this.fixedPriceQuantity = newFloatingUnitWithPercentPrice.fixedPriceQuantity - this.invoiceGroupingKey = newFloatingUnitWithPercentPrice.invoiceGroupingKey - this.cadence = newFloatingUnitWithPercentPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingUnitWithPercentPrice.metadata + externalPriceId = newFloatingUnitWithPercentPrice.externalPriceId + name = newFloatingUnitWithPercentPrice.name + billableMetricId = newFloatingUnitWithPercentPrice.billableMetricId + itemId = newFloatingUnitWithPercentPrice.itemId + billedInAdvance = newFloatingUnitWithPercentPrice.billedInAdvance + fixedPriceQuantity = newFloatingUnitWithPercentPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingUnitWithPercentPrice.invoiceGroupingKey + cadence = newFloatingUnitWithPercentPrice.cadence + billingCycleConfiguration = newFloatingUnitWithPercentPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingUnitWithPercentPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingUnitWithPercentPrice.conversionRate - this.modelType = newFloatingUnitWithPercentPrice.modelType - this.unitWithPercentConfig = + conversionRate = newFloatingUnitWithPercentPrice.conversionRate + modelType = newFloatingUnitWithPercentPrice.modelType + unitWithPercentConfig = newFloatingUnitWithPercentPrice.unitWithPercentConfig - this.currency = newFloatingUnitWithPercentPrice.currency - additionalProperties(newFloatingUnitWithPercentPrice.additionalProperties) + currency = newFloatingUnitWithPercentPrice.currency + additionalProperties = + newFloatingUnitWithPercentPrice.additionalProperties.toMutableMap() } /** @@ -21767,75 +17531,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -21843,37 +17564,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -21881,16 +17582,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -21899,66 +17590,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithPercentConfig(unitWithPercentConfig: UnitWithPercentConfig) = - unitWithPercentConfig(JsonField.of(unitWithPercentConfig)) - - @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun unitWithPercentConfig( - unitWithPercentConfig: JsonField - ) = apply { this.unitWithPercentConfig = unitWithPercentConfig } - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithPercentConfig = unitWithPercentConfig + } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21966,23 +17623,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingUnitWithPercentPrice = NewFloatingUnitWithPercentPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithPercentConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithPercentConfig) { + "`unitWithPercentConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -22121,25 +17788,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithPercentConfig.Builder::class) @NoAutoDetect class UnitWithPercentConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithPercentConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22154,24 +17814,32 @@ constructor( @JvmSynthetic internal fun from(unitWithPercentConfig: UnitWithPercentConfig) = apply { - additionalProperties(unitWithPercentConfig.additionalProperties) + additionalProperties = + unitWithPercentConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithPercentConfig = UnitWithPercentConfig(additionalProperties.toImmutable()) } @@ -22198,43 +17866,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22244,57 +17895,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -22380,43 +18030,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22426,8 +18059,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -22435,49 +18068,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -22564,25 +18196,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22597,24 +18222,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -22627,237 +18259,137 @@ constructor( } /* spotless:off */ - private val hashCode: Int by lazy { Objects.hash(additionalProperties) } - /* spotless:on */ - - override fun hashCode(): Int = hashCode - - override fun toString() = "Metadata{additionalProperties=$additionalProperties}" - } - - override fun equals(other: Any?): Boolean { - if (this === other) { - return true - } - - return /* spotless:off */ other is NewFloatingUnitWithPercentPrice && metadata == other.metadata && externalPriceId == other.externalPriceId && name == other.name && billableMetricId == other.billableMetricId && itemId == other.itemId && billedInAdvance == other.billedInAdvance && fixedPriceQuantity == other.fixedPriceQuantity && invoiceGroupingKey == other.invoiceGroupingKey && cadence == other.cadence && billingCycleConfiguration == other.billingCycleConfiguration && invoicingCycleConfiguration == other.invoicingCycleConfiguration && conversionRate == other.conversionRate && modelType == other.modelType && unitWithPercentConfig == other.unitWithPercentConfig && currency == other.currency && additionalProperties == other.additionalProperties /* spotless:on */ - } - - /* spotless:off */ - private val hashCode: Int by lazy { Objects.hash(metadata, externalPriceId, name, billableMetricId, itemId, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, cadence, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, modelType, unitWithPercentConfig, currency, additionalProperties) } - /* spotless:on */ - - override fun hashCode(): Int = hashCode - - override fun toString() = - "NewFloatingUnitWithPercentPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithPercentConfig=$unitWithPercentConfig, currency=$currency, additionalProperties=$additionalProperties}" - } - - @JsonDeserialize(builder = NewFloatingTieredWithProrationPrice.Builder::class) - @NoAutoDetect - class NewFloatingTieredWithProrationPrice - private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithProrationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, - ) { - - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) + private val hashCode: Int by lazy { Objects.hash(additionalProperties) } + /* spotless:on */ - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) + override fun hashCode(): Int = hashCode - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + override fun toString() = "Metadata{additionalProperties=$additionalProperties}" + } - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + return /* spotless:off */ other is NewFloatingUnitWithPercentPrice && metadata == other.metadata && externalPriceId == other.externalPriceId && name == other.name && billableMetricId == other.billableMetricId && itemId == other.itemId && billedInAdvance == other.billedInAdvance && fixedPriceQuantity == other.fixedPriceQuantity && invoiceGroupingKey == other.invoiceGroupingKey && cadence == other.cadence && billingCycleConfiguration == other.billingCycleConfiguration && invoicingCycleConfiguration == other.invoicingCycleConfiguration && conversionRate == other.conversionRate && modelType == other.modelType && unitWithPercentConfig == other.unitWithPercentConfig && currency == other.currency && additionalProperties == other.additionalProperties /* spotless:on */ + } - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(metadata, externalPriceId, name, billableMetricId, itemId, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, cadence, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, modelType, unitWithPercentConfig, currency, additionalProperties) } + /* spotless:on */ - fun modelType(): ModelType = modelType.getRequired("model_type") + override fun hashCode(): Int = hashCode - fun tieredWithProrationConfig(): TieredWithProrationConfig = - tieredWithProrationConfig.getRequired("tiered_with_proration_config") + override fun toString() = + "NewFloatingUnitWithPercentPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithPercentConfig=$unitWithPercentConfig, currency=$currency, additionalProperties=$additionalProperties}" + } - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") + @NoAutoDetect + class NewFloatingTieredWithProrationPrice + @JsonCreator + private constructor( + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_proration_config") + private val tieredWithProrationConfig: TieredWithProrationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), + ) { /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun _tieredWithProrationConfig() = tieredWithProrationConfig + fun tieredWithProrationConfig(): TieredWithProrationConfig = + tieredWithProrationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingTieredWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithProrationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22867,54 +18399,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithProrationConfig: TieredWithProrationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingTieredWithProrationPrice: NewFloatingTieredWithProrationPrice ) = apply { - this.metadata = newFloatingTieredWithProrationPrice.metadata - this.externalPriceId = newFloatingTieredWithProrationPrice.externalPriceId - this.name = newFloatingTieredWithProrationPrice.name - this.billableMetricId = newFloatingTieredWithProrationPrice.billableMetricId - this.itemId = newFloatingTieredWithProrationPrice.itemId - this.billedInAdvance = newFloatingTieredWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingTieredWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingTieredWithProrationPrice.invoiceGroupingKey - this.cadence = newFloatingTieredWithProrationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingTieredWithProrationPrice.metadata + externalPriceId = newFloatingTieredWithProrationPrice.externalPriceId + name = newFloatingTieredWithProrationPrice.name + billableMetricId = newFloatingTieredWithProrationPrice.billableMetricId + itemId = newFloatingTieredWithProrationPrice.itemId + billedInAdvance = newFloatingTieredWithProrationPrice.billedInAdvance + fixedPriceQuantity = newFloatingTieredWithProrationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingTieredWithProrationPrice.invoiceGroupingKey + cadence = newFloatingTieredWithProrationPrice.cadence + billingCycleConfiguration = newFloatingTieredWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingTieredWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingTieredWithProrationPrice.conversionRate - this.modelType = newFloatingTieredWithProrationPrice.modelType - this.tieredWithProrationConfig = + conversionRate = newFloatingTieredWithProrationPrice.conversionRate + modelType = newFloatingTieredWithProrationPrice.modelType + tieredWithProrationConfig = newFloatingTieredWithProrationPrice.tieredWithProrationConfig - this.currency = newFloatingTieredWithProrationPrice.currency - additionalProperties( - newFloatingTieredWithProrationPrice.additionalProperties - ) + currency = newFloatingTieredWithProrationPrice.currency + additionalProperties = + newFloatingTieredWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -22922,75 +18447,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -22998,37 +18480,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -23036,16 +18498,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -23054,67 +18506,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithProrationConfig( tieredWithProrationConfig: TieredWithProrationConfig - ) = tieredWithProrationConfig(JsonField.of(tieredWithProrationConfig)) - - @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun tieredWithProrationConfig( - tieredWithProrationConfig: JsonField ) = apply { this.tieredWithProrationConfig = tieredWithProrationConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23122,23 +18538,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingTieredWithProrationPrice = NewFloatingTieredWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithProrationConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithProrationConfig) { + "`tieredWithProrationConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -23277,25 +18703,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithProrationConfig.Builder::class) @NoAutoDetect class TieredWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23311,24 +18730,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithProrationConfig: TieredWithProrationConfig) = apply { - additionalProperties(tieredWithProrationConfig.additionalProperties) + additionalProperties = + tieredWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithProrationConfig = TieredWithProrationConfig(additionalProperties.toImmutable()) } @@ -23355,43 +18782,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23401,57 +18811,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -23537,43 +18946,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23583,8 +18975,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -23592,49 +18984,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -23721,25 +19112,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23754,24 +19138,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -23789,232 +19180,131 @@ constructor( override fun hashCode(): Int = hashCode - override fun toString() = "Metadata{additionalProperties=$additionalProperties}" - } - - override fun equals(other: Any?): Boolean { - if (this === other) { - return true - } - - return /* spotless:off */ other is NewFloatingTieredWithProrationPrice && metadata == other.metadata && externalPriceId == other.externalPriceId && name == other.name && billableMetricId == other.billableMetricId && itemId == other.itemId && billedInAdvance == other.billedInAdvance && fixedPriceQuantity == other.fixedPriceQuantity && invoiceGroupingKey == other.invoiceGroupingKey && cadence == other.cadence && billingCycleConfiguration == other.billingCycleConfiguration && invoicingCycleConfiguration == other.invoicingCycleConfiguration && conversionRate == other.conversionRate && modelType == other.modelType && tieredWithProrationConfig == other.tieredWithProrationConfig && currency == other.currency && additionalProperties == other.additionalProperties /* spotless:on */ - } - - /* spotless:off */ - private val hashCode: Int by lazy { Objects.hash(metadata, externalPriceId, name, billableMetricId, itemId, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, cadence, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, modelType, tieredWithProrationConfig, currency, additionalProperties) } - /* spotless:on */ - - override fun hashCode(): Int = hashCode - - override fun toString() = - "NewFloatingTieredWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithProrationConfig=$tieredWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" - } - - @JsonDeserialize(builder = NewFloatingUnitWithProrationPrice.Builder::class) - @NoAutoDetect - class NewFloatingUnitWithProrationPrice - private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithProrationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, - ) { - - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") + override fun toString() = "Metadata{additionalProperties=$additionalProperties}" + } - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + return /* spotless:off */ other is NewFloatingTieredWithProrationPrice && metadata == other.metadata && externalPriceId == other.externalPriceId && name == other.name && billableMetricId == other.billableMetricId && itemId == other.itemId && billedInAdvance == other.billedInAdvance && fixedPriceQuantity == other.fixedPriceQuantity && invoiceGroupingKey == other.invoiceGroupingKey && cadence == other.cadence && billingCycleConfiguration == other.billingCycleConfiguration && invoicingCycleConfiguration == other.invoicingCycleConfiguration && conversionRate == other.conversionRate && modelType == other.modelType && tieredWithProrationConfig == other.tieredWithProrationConfig && currency == other.currency && additionalProperties == other.additionalProperties /* spotless:on */ + } - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(metadata, externalPriceId, name, billableMetricId, itemId, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, cadence, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, modelType, tieredWithProrationConfig, currency, additionalProperties) } + /* spotless:on */ - fun modelType(): ModelType = modelType.getRequired("model_type") + override fun hashCode(): Int = hashCode - fun unitWithProrationConfig(): UnitWithProrationConfig = - unitWithProrationConfig.getRequired("unit_with_proration_config") + override fun toString() = + "NewFloatingTieredWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithProrationConfig=$tieredWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" + } - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") + @NoAutoDetect + class NewFloatingUnitWithProrationPrice + @JsonCreator + private constructor( + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_proration_config") + private val unitWithProrationConfig: UnitWithProrationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), + ) { /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun _unitWithProrationConfig() = unitWithProrationConfig + fun unitWithProrationConfig(): UnitWithProrationConfig = unitWithProrationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingUnitWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithProrationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24024,52 +19314,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithProrationConfig: UnitWithProrationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingUnitWithProrationPrice: NewFloatingUnitWithProrationPrice ) = apply { - this.metadata = newFloatingUnitWithProrationPrice.metadata - this.externalPriceId = newFloatingUnitWithProrationPrice.externalPriceId - this.name = newFloatingUnitWithProrationPrice.name - this.billableMetricId = newFloatingUnitWithProrationPrice.billableMetricId - this.itemId = newFloatingUnitWithProrationPrice.itemId - this.billedInAdvance = newFloatingUnitWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingUnitWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingUnitWithProrationPrice.invoiceGroupingKey - this.cadence = newFloatingUnitWithProrationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingUnitWithProrationPrice.metadata + externalPriceId = newFloatingUnitWithProrationPrice.externalPriceId + name = newFloatingUnitWithProrationPrice.name + billableMetricId = newFloatingUnitWithProrationPrice.billableMetricId + itemId = newFloatingUnitWithProrationPrice.itemId + billedInAdvance = newFloatingUnitWithProrationPrice.billedInAdvance + fixedPriceQuantity = newFloatingUnitWithProrationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingUnitWithProrationPrice.invoiceGroupingKey + cadence = newFloatingUnitWithProrationPrice.cadence + billingCycleConfiguration = newFloatingUnitWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingUnitWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingUnitWithProrationPrice.conversionRate - this.modelType = newFloatingUnitWithProrationPrice.modelType - this.unitWithProrationConfig = + conversionRate = newFloatingUnitWithProrationPrice.conversionRate + modelType = newFloatingUnitWithProrationPrice.modelType + unitWithProrationConfig = newFloatingUnitWithProrationPrice.unitWithProrationConfig - this.currency = newFloatingUnitWithProrationPrice.currency - additionalProperties(newFloatingUnitWithProrationPrice.additionalProperties) + currency = newFloatingUnitWithProrationPrice.currency + additionalProperties = + newFloatingUnitWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -24077,75 +19362,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -24153,37 +19395,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -24191,16 +19413,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -24209,66 +19421,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithProrationConfig(unitWithProrationConfig: UnitWithProrationConfig) = - unitWithProrationConfig(JsonField.of(unitWithProrationConfig)) - - @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun unitWithProrationConfig( - unitWithProrationConfig: JsonField - ) = apply { this.unitWithProrationConfig = unitWithProrationConfig } - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithProrationConfig = unitWithProrationConfig + } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24276,23 +19454,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingUnitWithProrationPrice = NewFloatingUnitWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithProrationConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithProrationConfig) { + "`unitWithProrationConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -24431,25 +19619,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithProrationConfig.Builder::class) @NoAutoDetect class UnitWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24465,24 +19646,32 @@ constructor( @JvmSynthetic internal fun from(unitWithProrationConfig: UnitWithProrationConfig) = apply { - additionalProperties(unitWithProrationConfig.additionalProperties) + additionalProperties = + unitWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithProrationConfig = UnitWithProrationConfig(additionalProperties.toImmutable()) } @@ -24509,43 +19698,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24555,57 +19727,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -24691,43 +19862,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24737,8 +19891,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -24746,49 +19900,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -24875,25 +20028,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24908,24 +20054,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -24946,229 +20099,128 @@ constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - override fun equals(other: Any?): Boolean { - if (this === other) { - return true - } - - return /* spotless:off */ other is NewFloatingUnitWithProrationPrice && metadata == other.metadata && externalPriceId == other.externalPriceId && name == other.name && billableMetricId == other.billableMetricId && itemId == other.itemId && billedInAdvance == other.billedInAdvance && fixedPriceQuantity == other.fixedPriceQuantity && invoiceGroupingKey == other.invoiceGroupingKey && cadence == other.cadence && billingCycleConfiguration == other.billingCycleConfiguration && invoicingCycleConfiguration == other.invoicingCycleConfiguration && conversionRate == other.conversionRate && modelType == other.modelType && unitWithProrationConfig == other.unitWithProrationConfig && currency == other.currency && additionalProperties == other.additionalProperties /* spotless:on */ - } - - /* spotless:off */ - private val hashCode: Int by lazy { Objects.hash(metadata, externalPriceId, name, billableMetricId, itemId, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, cadence, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, modelType, unitWithProrationConfig, currency, additionalProperties) } - /* spotless:on */ - - override fun hashCode(): Int = hashCode - - override fun toString() = - "NewFloatingUnitWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithProrationConfig=$unitWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" - } - - @JsonDeserialize(builder = NewFloatingGroupedAllocationPrice.Builder::class) - @NoAutoDetect - class NewFloatingGroupedAllocationPrice - private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedAllocationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, - ) { - - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) + return /* spotless:off */ other is NewFloatingUnitWithProrationPrice && metadata == other.metadata && externalPriceId == other.externalPriceId && name == other.name && billableMetricId == other.billableMetricId && itemId == other.itemId && billedInAdvance == other.billedInAdvance && fixedPriceQuantity == other.fixedPriceQuantity && invoiceGroupingKey == other.invoiceGroupingKey && cadence == other.cadence && billingCycleConfiguration == other.billingCycleConfiguration && invoicingCycleConfiguration == other.invoicingCycleConfiguration && conversionRate == other.conversionRate && modelType == other.modelType && unitWithProrationConfig == other.unitWithProrationConfig && currency == other.currency && additionalProperties == other.additionalProperties /* spotless:on */ + } + + /* spotless:off */ + private val hashCode: Int by lazy { Objects.hash(metadata, externalPriceId, name, billableMetricId, itemId, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, cadence, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, modelType, unitWithProrationConfig, currency, additionalProperties) } + /* spotless:on */ - fun modelType(): ModelType = modelType.getRequired("model_type") + override fun hashCode(): Int = hashCode - fun groupedAllocationConfig(): GroupedAllocationConfig = - groupedAllocationConfig.getRequired("grouped_allocation_config") + override fun toString() = + "NewFloatingUnitWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithProrationConfig=$unitWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" + } - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") + @NoAutoDetect + class NewFloatingGroupedAllocationPrice + @JsonCreator + private constructor( + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_allocation_config") + private val groupedAllocationConfig: GroupedAllocationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), + ) { /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun _groupedAllocationConfig() = groupedAllocationConfig + fun groupedAllocationConfig(): GroupedAllocationConfig = groupedAllocationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingGroupedAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedAllocationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25178,52 +20230,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedAllocationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedAllocationConfig: GroupedAllocationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingGroupedAllocationPrice: NewFloatingGroupedAllocationPrice ) = apply { - this.metadata = newFloatingGroupedAllocationPrice.metadata - this.externalPriceId = newFloatingGroupedAllocationPrice.externalPriceId - this.name = newFloatingGroupedAllocationPrice.name - this.billableMetricId = newFloatingGroupedAllocationPrice.billableMetricId - this.itemId = newFloatingGroupedAllocationPrice.itemId - this.billedInAdvance = newFloatingGroupedAllocationPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingGroupedAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingGroupedAllocationPrice.invoiceGroupingKey - this.cadence = newFloatingGroupedAllocationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingGroupedAllocationPrice.metadata + externalPriceId = newFloatingGroupedAllocationPrice.externalPriceId + name = newFloatingGroupedAllocationPrice.name + billableMetricId = newFloatingGroupedAllocationPrice.billableMetricId + itemId = newFloatingGroupedAllocationPrice.itemId + billedInAdvance = newFloatingGroupedAllocationPrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedAllocationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingGroupedAllocationPrice.invoiceGroupingKey + cadence = newFloatingGroupedAllocationPrice.cadence + billingCycleConfiguration = newFloatingGroupedAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingGroupedAllocationPrice.conversionRate - this.modelType = newFloatingGroupedAllocationPrice.modelType - this.groupedAllocationConfig = + conversionRate = newFloatingGroupedAllocationPrice.conversionRate + modelType = newFloatingGroupedAllocationPrice.modelType + groupedAllocationConfig = newFloatingGroupedAllocationPrice.groupedAllocationConfig - this.currency = newFloatingGroupedAllocationPrice.currency - additionalProperties(newFloatingGroupedAllocationPrice.additionalProperties) + currency = newFloatingGroupedAllocationPrice.currency + additionalProperties = + newFloatingGroupedAllocationPrice.additionalProperties.toMutableMap() } /** @@ -25231,75 +20278,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -25307,37 +20311,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -25345,16 +20329,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -25363,66 +20337,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedAllocationConfig(groupedAllocationConfig: GroupedAllocationConfig) = - groupedAllocationConfig(JsonField.of(groupedAllocationConfig)) - - @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun groupedAllocationConfig( - groupedAllocationConfig: JsonField - ) = apply { this.groupedAllocationConfig = groupedAllocationConfig } - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.groupedAllocationConfig = groupedAllocationConfig + } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25430,23 +20370,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedAllocationPrice = NewFloatingGroupedAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedAllocationConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedAllocationConfig) { + "`groupedAllocationConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -25533,25 +20483,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedAllocationConfig.Builder::class) @NoAutoDetect class GroupedAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25567,24 +20510,32 @@ constructor( @JvmSynthetic internal fun from(groupedAllocationConfig: GroupedAllocationConfig) = apply { - additionalProperties(groupedAllocationConfig.additionalProperties) + additionalProperties = + groupedAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedAllocationConfig = GroupedAllocationConfig(additionalProperties.toImmutable()) } @@ -25663,43 +20614,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25709,57 +20643,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -25845,43 +20778,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25891,8 +20807,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -25900,49 +20816,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -26029,25 +20944,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26062,24 +20970,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -26118,214 +21033,111 @@ constructor( "NewFloatingGroupedAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedAllocationConfig=$groupedAllocationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingGroupedWithProratedMinimumPrice.Builder::class) @NoAutoDetect class NewFloatingGroupedWithProratedMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedWithProratedMinimumConfig: - JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_prorated_minimum_config") + private val groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = - groupedWithProratedMinimumConfig.getRequired( - "grouped_with_prorated_minimum_config" - ) - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun _groupedWithProratedMinimumConfig() = groupedWithProratedMinimumConfig + fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = + groupedWithProratedMinimumConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingGroupedWithProratedMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedWithProratedMinimumConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26335,26 +21147,23 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null private var groupedWithProratedMinimumConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + GroupedWithProratedMinimumConfig? = + null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -26362,34 +21171,31 @@ constructor( newFloatingGroupedWithProratedMinimumPrice: NewFloatingGroupedWithProratedMinimumPrice ) = apply { - this.metadata = newFloatingGroupedWithProratedMinimumPrice.metadata - this.externalPriceId = - newFloatingGroupedWithProratedMinimumPrice.externalPriceId - this.name = newFloatingGroupedWithProratedMinimumPrice.name - this.billableMetricId = + metadata = newFloatingGroupedWithProratedMinimumPrice.metadata + externalPriceId = newFloatingGroupedWithProratedMinimumPrice.externalPriceId + name = newFloatingGroupedWithProratedMinimumPrice.name + billableMetricId = newFloatingGroupedWithProratedMinimumPrice.billableMetricId - this.itemId = newFloatingGroupedWithProratedMinimumPrice.itemId - this.billedInAdvance = - newFloatingGroupedWithProratedMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + itemId = newFloatingGroupedWithProratedMinimumPrice.itemId + billedInAdvance = newFloatingGroupedWithProratedMinimumPrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedWithProratedMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newFloatingGroupedWithProratedMinimumPrice.invoiceGroupingKey - this.cadence = newFloatingGroupedWithProratedMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newFloatingGroupedWithProratedMinimumPrice.cadence + billingCycleConfiguration = newFloatingGroupedWithProratedMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedWithProratedMinimumPrice.invoicingCycleConfiguration - this.conversionRate = - newFloatingGroupedWithProratedMinimumPrice.conversionRate - this.modelType = newFloatingGroupedWithProratedMinimumPrice.modelType - this.groupedWithProratedMinimumConfig = + conversionRate = newFloatingGroupedWithProratedMinimumPrice.conversionRate + modelType = newFloatingGroupedWithProratedMinimumPrice.modelType + groupedWithProratedMinimumConfig = newFloatingGroupedWithProratedMinimumPrice .groupedWithProratedMinimumConfig - this.currency = newFloatingGroupedWithProratedMinimumPrice.currency - additionalProperties( + currency = newFloatingGroupedWithProratedMinimumPrice.currency + additionalProperties = newFloatingGroupedWithProratedMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -26397,75 +21203,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -26473,37 +21236,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -26511,16 +21254,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -26529,73 +21262,33 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedWithProratedMinimumConfig( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig - ) = - groupedWithProratedMinimumConfig( - JsonField.of(groupedWithProratedMinimumConfig) - ) - - @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun groupedWithProratedMinimumConfig( - groupedWithProratedMinimumConfig: - JsonField ) = apply { this.groupedWithProratedMinimumConfig = groupedWithProratedMinimumConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -26603,23 +21296,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedWithProratedMinimumPrice = NewFloatingGroupedWithProratedMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedWithProratedMinimumConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedWithProratedMinimumConfig) { + "`groupedWithProratedMinimumConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -26706,25 +21409,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithProratedMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithProratedMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedWithProratedMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26741,26 +21437,32 @@ constructor( internal fun from( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = apply { - additionalProperties( - groupedWithProratedMinimumConfig.additionalProperties - ) + additionalProperties = + groupedWithProratedMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithProratedMinimumConfig = GroupedWithProratedMinimumConfig(additionalProperties.toImmutable()) } @@ -26840,43 +21542,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26886,57 +21571,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -27022,43 +21706,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27068,8 +21735,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -27077,49 +21744,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -27206,25 +21872,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27239,24 +21898,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -27295,214 +21961,111 @@ constructor( "NewFloatingGroupedWithProratedMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithProratedMinimumConfig=$groupedWithProratedMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingGroupedWithMeteredMinimumPrice.Builder::class) @NoAutoDetect class NewFloatingGroupedWithMeteredMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedWithMeteredMinimumConfig: - JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_metered_minimum_config") + private val groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedWithMeteredMinimumConfig(): GroupedWithMeteredMinimumConfig = - groupedWithMeteredMinimumConfig.getRequired( - "grouped_with_metered_minimum_config" - ) - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_metered_minimum_config") - @ExcludeMissing - fun _groupedWithMeteredMinimumConfig() = groupedWithMeteredMinimumConfig + fun groupedWithMeteredMinimumConfig(): GroupedWithMeteredMinimumConfig = + groupedWithMeteredMinimumConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingGroupedWithMeteredMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedWithMeteredMinimumConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27512,26 +22075,22 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedWithMeteredMinimumConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig? = + null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -27539,34 +22098,31 @@ constructor( newFloatingGroupedWithMeteredMinimumPrice: NewFloatingGroupedWithMeteredMinimumPrice ) = apply { - this.metadata = newFloatingGroupedWithMeteredMinimumPrice.metadata - this.externalPriceId = - newFloatingGroupedWithMeteredMinimumPrice.externalPriceId - this.name = newFloatingGroupedWithMeteredMinimumPrice.name - this.billableMetricId = + metadata = newFloatingGroupedWithMeteredMinimumPrice.metadata + externalPriceId = newFloatingGroupedWithMeteredMinimumPrice.externalPriceId + name = newFloatingGroupedWithMeteredMinimumPrice.name + billableMetricId = newFloatingGroupedWithMeteredMinimumPrice.billableMetricId - this.itemId = newFloatingGroupedWithMeteredMinimumPrice.itemId - this.billedInAdvance = - newFloatingGroupedWithMeteredMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + itemId = newFloatingGroupedWithMeteredMinimumPrice.itemId + billedInAdvance = newFloatingGroupedWithMeteredMinimumPrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedWithMeteredMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newFloatingGroupedWithMeteredMinimumPrice.invoiceGroupingKey - this.cadence = newFloatingGroupedWithMeteredMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newFloatingGroupedWithMeteredMinimumPrice.cadence + billingCycleConfiguration = newFloatingGroupedWithMeteredMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedWithMeteredMinimumPrice.invoicingCycleConfiguration - this.conversionRate = - newFloatingGroupedWithMeteredMinimumPrice.conversionRate - this.modelType = newFloatingGroupedWithMeteredMinimumPrice.modelType - this.groupedWithMeteredMinimumConfig = + conversionRate = newFloatingGroupedWithMeteredMinimumPrice.conversionRate + modelType = newFloatingGroupedWithMeteredMinimumPrice.modelType + groupedWithMeteredMinimumConfig = newFloatingGroupedWithMeteredMinimumPrice .groupedWithMeteredMinimumConfig - this.currency = newFloatingGroupedWithMeteredMinimumPrice.currency - additionalProperties( + currency = newFloatingGroupedWithMeteredMinimumPrice.currency + additionalProperties = newFloatingGroupedWithMeteredMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -27574,75 +22130,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -27650,37 +22163,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -27688,16 +22181,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -27706,72 +22189,33 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedWithMeteredMinimumConfig( groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig - ) = - groupedWithMeteredMinimumConfig( - JsonField.of(groupedWithMeteredMinimumConfig) - ) - - @JsonProperty("grouped_with_metered_minimum_config") - @ExcludeMissing - fun groupedWithMeteredMinimumConfig( - groupedWithMeteredMinimumConfig: JsonField ) = apply { this.groupedWithMeteredMinimumConfig = groupedWithMeteredMinimumConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27779,23 +22223,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedWithMeteredMinimumPrice = NewFloatingGroupedWithMeteredMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedWithMeteredMinimumConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedWithMeteredMinimumConfig) { + "`groupedWithMeteredMinimumConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -27882,25 +22336,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithMeteredMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithMeteredMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedWithMeteredMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27917,26 +22364,32 @@ constructor( internal fun from( groupedWithMeteredMinimumConfig: GroupedWithMeteredMinimumConfig ) = apply { - additionalProperties( - groupedWithMeteredMinimumConfig.additionalProperties - ) + additionalProperties = + groupedWithMeteredMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithMeteredMinimumConfig = GroupedWithMeteredMinimumConfig(additionalProperties.toImmutable()) } @@ -28016,43 +22469,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -28062,57 +22498,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -28198,43 +22633,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -28244,8 +22662,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -28253,49 +22671,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -28382,25 +22799,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -28415,24 +22825,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -28471,211 +22888,111 @@ constructor( "NewFloatingGroupedWithMeteredMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithMeteredMinimumConfig=$groupedWithMeteredMinimumConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingMatrixWithDisplayNamePrice.Builder::class) @NoAutoDetect class NewFloatingMatrixWithDisplayNamePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val matrixWithDisplayNameConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_with_display_name_config") + private val matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun matrixWithDisplayNameConfig(): MatrixWithDisplayNameConfig = - matrixWithDisplayNameConfig.getRequired("matrix_with_display_name_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("matrix_with_display_name_config") - @ExcludeMissing - fun _matrixWithDisplayNameConfig() = matrixWithDisplayNameConfig + fun matrixWithDisplayNameConfig(): MatrixWithDisplayNameConfig = + matrixWithDisplayNameConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingMatrixWithDisplayNamePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - matrixWithDisplayNameConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -28685,56 +23002,50 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var matrixWithDisplayNameConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingMatrixWithDisplayNamePrice: NewFloatingMatrixWithDisplayNamePrice ) = apply { - this.metadata = newFloatingMatrixWithDisplayNamePrice.metadata - this.externalPriceId = newFloatingMatrixWithDisplayNamePrice.externalPriceId - this.name = newFloatingMatrixWithDisplayNamePrice.name - this.billableMetricId = - newFloatingMatrixWithDisplayNamePrice.billableMetricId - this.itemId = newFloatingMatrixWithDisplayNamePrice.itemId - this.billedInAdvance = newFloatingMatrixWithDisplayNamePrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newFloatingMatrixWithDisplayNamePrice.metadata + externalPriceId = newFloatingMatrixWithDisplayNamePrice.externalPriceId + name = newFloatingMatrixWithDisplayNamePrice.name + billableMetricId = newFloatingMatrixWithDisplayNamePrice.billableMetricId + itemId = newFloatingMatrixWithDisplayNamePrice.itemId + billedInAdvance = newFloatingMatrixWithDisplayNamePrice.billedInAdvance + fixedPriceQuantity = newFloatingMatrixWithDisplayNamePrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newFloatingMatrixWithDisplayNamePrice.invoiceGroupingKey - this.cadence = newFloatingMatrixWithDisplayNamePrice.cadence - this.billingCycleConfiguration = + cadence = newFloatingMatrixWithDisplayNamePrice.cadence + billingCycleConfiguration = newFloatingMatrixWithDisplayNamePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingMatrixWithDisplayNamePrice.invoicingCycleConfiguration - this.conversionRate = newFloatingMatrixWithDisplayNamePrice.conversionRate - this.modelType = newFloatingMatrixWithDisplayNamePrice.modelType - this.matrixWithDisplayNameConfig = + conversionRate = newFloatingMatrixWithDisplayNamePrice.conversionRate + modelType = newFloatingMatrixWithDisplayNamePrice.modelType + matrixWithDisplayNameConfig = newFloatingMatrixWithDisplayNamePrice.matrixWithDisplayNameConfig - this.currency = newFloatingMatrixWithDisplayNamePrice.currency - additionalProperties( + currency = newFloatingMatrixWithDisplayNamePrice.currency + additionalProperties = newFloatingMatrixWithDisplayNamePrice.additionalProperties - ) + .toMutableMap() } /** @@ -28742,75 +23053,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -28818,37 +23086,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -28856,16 +23104,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -28874,67 +23112,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun matrixWithDisplayNameConfig( matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig - ) = matrixWithDisplayNameConfig(JsonField.of(matrixWithDisplayNameConfig)) - - @JsonProperty("matrix_with_display_name_config") - @ExcludeMissing - fun matrixWithDisplayNameConfig( - matrixWithDisplayNameConfig: JsonField ) = apply { this.matrixWithDisplayNameConfig = matrixWithDisplayNameConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28942,23 +23144,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingMatrixWithDisplayNamePrice = NewFloatingMatrixWithDisplayNamePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - matrixWithDisplayNameConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(matrixWithDisplayNameConfig) { + "`matrixWithDisplayNameConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -29045,25 +23257,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixWithDisplayNameConfig.Builder::class) @NoAutoDetect class MatrixWithDisplayNameConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixWithDisplayNameConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -29080,24 +23285,32 @@ constructor( internal fun from( matrixWithDisplayNameConfig: MatrixWithDisplayNameConfig ) = apply { - additionalProperties(matrixWithDisplayNameConfig.additionalProperties) + additionalProperties = + matrixWithDisplayNameConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixWithDisplayNameConfig = MatrixWithDisplayNameConfig(additionalProperties.toImmutable()) } @@ -29176,43 +23389,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -29222,57 +23418,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -29358,43 +23553,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -29404,8 +23582,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -29413,49 +23591,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -29542,25 +23719,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -29575,24 +23745,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -29631,211 +23808,110 @@ constructor( "NewFloatingMatrixWithDisplayNamePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixWithDisplayNameConfig=$matrixWithDisplayNameConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingBulkWithProrationPrice.Builder::class) @NoAutoDetect class NewFloatingBulkWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkWithProrationConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_with_proration_config") + private val bulkWithProrationConfig: BulkWithProrationConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkWithProrationConfig(): BulkWithProrationConfig = - bulkWithProrationConfig.getRequired("bulk_with_proration_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun _bulkWithProrationConfig() = bulkWithProrationConfig + fun bulkWithProrationConfig(): BulkWithProrationConfig = bulkWithProrationConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingBulkWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkWithProrationConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -29845,52 +23921,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkWithProrationConfig: BulkWithProrationConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingBulkWithProrationPrice: NewFloatingBulkWithProrationPrice ) = apply { - this.metadata = newFloatingBulkWithProrationPrice.metadata - this.externalPriceId = newFloatingBulkWithProrationPrice.externalPriceId - this.name = newFloatingBulkWithProrationPrice.name - this.billableMetricId = newFloatingBulkWithProrationPrice.billableMetricId - this.itemId = newFloatingBulkWithProrationPrice.itemId - this.billedInAdvance = newFloatingBulkWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingBulkWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingBulkWithProrationPrice.invoiceGroupingKey - this.cadence = newFloatingBulkWithProrationPrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingBulkWithProrationPrice.metadata + externalPriceId = newFloatingBulkWithProrationPrice.externalPriceId + name = newFloatingBulkWithProrationPrice.name + billableMetricId = newFloatingBulkWithProrationPrice.billableMetricId + itemId = newFloatingBulkWithProrationPrice.itemId + billedInAdvance = newFloatingBulkWithProrationPrice.billedInAdvance + fixedPriceQuantity = newFloatingBulkWithProrationPrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingBulkWithProrationPrice.invoiceGroupingKey + cadence = newFloatingBulkWithProrationPrice.cadence + billingCycleConfiguration = newFloatingBulkWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingBulkWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newFloatingBulkWithProrationPrice.conversionRate - this.modelType = newFloatingBulkWithProrationPrice.modelType - this.bulkWithProrationConfig = + conversionRate = newFloatingBulkWithProrationPrice.conversionRate + modelType = newFloatingBulkWithProrationPrice.modelType + bulkWithProrationConfig = newFloatingBulkWithProrationPrice.bulkWithProrationConfig - this.currency = newFloatingBulkWithProrationPrice.currency - additionalProperties(newFloatingBulkWithProrationPrice.additionalProperties) + currency = newFloatingBulkWithProrationPrice.currency + additionalProperties = + newFloatingBulkWithProrationPrice.additionalProperties.toMutableMap() } /** @@ -29898,75 +23969,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -29974,37 +24002,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -30012,16 +24020,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -30030,66 +24028,32 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun bulkWithProrationConfig(bulkWithProrationConfig: BulkWithProrationConfig) = - bulkWithProrationConfig(JsonField.of(bulkWithProrationConfig)) - - @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun bulkWithProrationConfig( - bulkWithProrationConfig: JsonField - ) = apply { this.bulkWithProrationConfig = bulkWithProrationConfig } - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.bulkWithProrationConfig = bulkWithProrationConfig + } /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30097,46 +24061,49 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingBulkWithProrationPrice = NewFloatingBulkWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkWithProrationConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkWithProrationConfig) { + "`bulkWithProrationConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkWithProrationConfig.Builder::class) @NoAutoDetect class BulkWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30152,24 +24119,32 @@ constructor( @JvmSynthetic internal fun from(bulkWithProrationConfig: BulkWithProrationConfig) = apply { - additionalProperties(bulkWithProrationConfig.additionalProperties) + additionalProperties = + bulkWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkWithProrationConfig = BulkWithProrationConfig(additionalProperties.toImmutable()) } @@ -30330,43 +24305,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30376,57 +24334,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -30512,43 +24469,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30558,8 +24498,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -30567,49 +24507,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -30696,25 +24635,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30729,24 +24661,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -30785,211 +24724,111 @@ constructor( "NewFloatingBulkWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkWithProrationConfig=$bulkWithProrationConfig, currency=$currency, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewFloatingGroupedTieredPackagePrice.Builder::class) @NoAutoDetect class NewFloatingGroupedTieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedTieredPackageConfig: JsonField, - private val currency: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_tiered_package_config") + private val groupedTieredPackageConfig: GroupedTieredPackageConfig, + @JsonProperty("currency") private val currency: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedTieredPackageConfig(): GroupedTieredPackageConfig = - groupedTieredPackageConfig.getRequired("grouped_tiered_package_config") - - /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(): String = currency.getRequired("currency") - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_tiered_package_config") - @ExcludeMissing - fun _groupedTieredPackageConfig() = groupedTieredPackageConfig + fun groupedTieredPackageConfig(): GroupedTieredPackageConfig = + groupedTieredPackageConfig /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") fun currency(): String = currency @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewFloatingGroupedTieredPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedTieredPackageConfig().validate() - currency() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30999,55 +24838,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedTieredPackageConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedTieredPackageConfig: GroupedTieredPackageConfig? = null + private var currency: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newFloatingGroupedTieredPackagePrice: NewFloatingGroupedTieredPackagePrice ) = apply { - this.metadata = newFloatingGroupedTieredPackagePrice.metadata - this.externalPriceId = newFloatingGroupedTieredPackagePrice.externalPriceId - this.name = newFloatingGroupedTieredPackagePrice.name - this.billableMetricId = - newFloatingGroupedTieredPackagePrice.billableMetricId - this.itemId = newFloatingGroupedTieredPackagePrice.itemId - this.billedInAdvance = newFloatingGroupedTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = - newFloatingGroupedTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = - newFloatingGroupedTieredPackagePrice.invoiceGroupingKey - this.cadence = newFloatingGroupedTieredPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newFloatingGroupedTieredPackagePrice.metadata + externalPriceId = newFloatingGroupedTieredPackagePrice.externalPriceId + name = newFloatingGroupedTieredPackagePrice.name + billableMetricId = newFloatingGroupedTieredPackagePrice.billableMetricId + itemId = newFloatingGroupedTieredPackagePrice.itemId + billedInAdvance = newFloatingGroupedTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newFloatingGroupedTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newFloatingGroupedTieredPackagePrice.invoiceGroupingKey + cadence = newFloatingGroupedTieredPackagePrice.cadence + billingCycleConfiguration = newFloatingGroupedTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newFloatingGroupedTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newFloatingGroupedTieredPackagePrice.conversionRate - this.modelType = newFloatingGroupedTieredPackagePrice.modelType - this.groupedTieredPackageConfig = + conversionRate = newFloatingGroupedTieredPackagePrice.conversionRate + modelType = newFloatingGroupedTieredPackagePrice.modelType + groupedTieredPackageConfig = newFloatingGroupedTieredPackagePrice.groupedTieredPackageConfig - this.currency = newFloatingGroupedTieredPackagePrice.currency - additionalProperties( - newFloatingGroupedTieredPackagePrice.additionalProperties - ) + currency = newFloatingGroupedTieredPackagePrice.currency + additionalProperties = + newFloatingGroupedTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -31055,75 +24886,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -31131,37 +24919,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -31169,16 +24937,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -31187,67 +24945,31 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedTieredPackageConfig( groupedTieredPackageConfig: GroupedTieredPackageConfig - ) = groupedTieredPackageConfig(JsonField.of(groupedTieredPackageConfig)) - - @JsonProperty("grouped_tiered_package_config") - @ExcludeMissing - fun groupedTieredPackageConfig( - groupedTieredPackageConfig: JsonField ) = apply { this.groupedTieredPackageConfig = groupedTieredPackageConfig } /** An ISO 4217 currency string for which this price is billed in. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** An ISO 4217 currency string for which this price is billed in. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -31255,23 +24977,33 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewFloatingGroupedTieredPackagePrice = NewFloatingGroupedTieredPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedTieredPackageConfig, - currency, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedTieredPackageConfig) { + "`groupedTieredPackageConfig` is required but was not set" + }, + checkNotNull(currency) { "`currency` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -31358,25 +25090,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedTieredPackageConfig.Builder::class) @NoAutoDetect class GroupedTieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedTieredPackageConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31392,26 +25117,32 @@ constructor( @JvmSynthetic internal fun from(groupedTieredPackageConfig: GroupedTieredPackageConfig) = apply { - additionalProperties( - groupedTieredPackageConfig.additionalProperties - ) + additionalProperties = + groupedTieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedTieredPackageConfig = GroupedTieredPackageConfig(additionalProperties.toImmutable()) } @@ -31490,43 +25221,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31536,57 +25250,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -31672,43 +25385,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31718,8 +25414,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -31727,49 +25423,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -31856,25 +25551,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31889,24 +25577,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -31964,30 +25659,31 @@ constructor( "Add{priceId=$priceId, externalPriceId=$externalPriceId, price=$price, allocationPrice=$allocationPrice, startDate=$startDate, endDate=$endDate, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, discounts=$discounts, minimumAmount=$minimumAmount, maximumAmount=$maximumAmount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddAdjustment.Builder::class) @NoAutoDetect class AddAdjustment + @JsonCreator private constructor( - private val adjustment: Adjustment?, - private val startDate: StartDate?, - private val endDate: EndDate?, - private val additionalProperties: Map, + @JsonProperty("adjustment") private val adjustment: Adjustment, + @JsonProperty("start_date") private val startDate: StartDate, + @JsonProperty("end_date") private val endDate: EndDate?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(): Adjustment? = adjustment + @JsonProperty("adjustment") fun adjustment(): Adjustment = adjustment /** * The start date of the adjustment interval. This is the date that the adjustment will * start affecting prices on the subscription. */ - @JsonProperty("start_date") fun startDate(): StartDate? = startDate + @JsonProperty("start_date") fun startDate(): StartDate = startDate /** * The end date of the adjustment interval. This is the date that the adjustment will stop * affecting prices on the subscription. */ - @JsonProperty("end_date") fun endDate(): EndDate? = endDate + @JsonProperty("end_date") fun endDate(): Optional = Optional.ofNullable(endDate) @JsonAnyGetter @ExcludeMissing @@ -32009,44 +25705,46 @@ constructor( @JvmSynthetic internal fun from(addAdjustment: AddAdjustment) = apply { - this.adjustment = addAdjustment.adjustment - this.startDate = addAdjustment.startDate - this.endDate = addAdjustment.endDate - additionalProperties(addAdjustment.additionalProperties) + adjustment = addAdjustment.adjustment + startDate = addAdjustment.startDate + endDate = addAdjustment.endDate + additionalProperties = addAdjustment.additionalProperties.toMutableMap() } /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(adjustment: Adjustment) = apply { this.adjustment = adjustment } /** * The start date of the adjustment interval. This is the date that the adjustment will * start affecting prices on the subscription. */ - @JsonProperty("start_date") fun startDate(startDate: StartDate) = apply { this.startDate = startDate } /** * The end date of the adjustment interval. This is the date that the adjustment will * stop affecting prices on the subscription. */ - @JsonProperty("end_date") fun endDate(endDate: EndDate) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddAdjustment = AddAdjustment( checkNotNull(adjustment) { "`adjustment` is required but was not set" }, @@ -32068,8 +25766,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newPercentageDiscount(): Optional = Optional.ofNullable(newPercentageDiscount) @@ -32120,26 +25816,6 @@ constructor( } } - fun validate(): Adjustment = apply { - if (!validated) { - if ( - newPercentageDiscount == null && - newUsageDiscount == null && - newAmountDiscount == null && - newMinimum == null && - newMaximum == null - ) { - throw OrbInvalidDataException("Unknown Adjustment: $_json") - } - newPercentageDiscount?.validate() - newUsageDiscount?.validate() - newAmountDiscount?.validate() - newMinimum?.validate() - newMaximum?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -32209,40 +25885,29 @@ constructor( when (adjustmentType) { "percentage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newPercentageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newPercentageDiscount = it, _json = json) + } } - "usage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newUsageDiscount = it, _json = json) - } + "usage_discount" -> { + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newUsageDiscount = it, _json = json) + } } "amount_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newAmountDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newAmountDiscount = it, _json = json) + } } "minimum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMinimum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMinimum = it, _json = json) + } } "maximum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMaximum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMaximum = it, _json = json) + } } } @@ -32272,70 +25937,39 @@ constructor( } } - @JsonDeserialize(builder = NewPercentageDiscount.Builder::class) @NoAutoDetect class NewPercentageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun percentageDiscount(): Double = - percentageDiscount.getRequired("percentage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType @JsonProperty("percentage_discount") - @ExcludeMissing - fun _percentageDiscount() = percentageDiscount + fun percentageDiscount(): Double = percentageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPercentageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - percentageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32345,29 +25979,24 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var percentageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var percentageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPercentageDiscount: NewPercentageDiscount) = apply { - this.appliesToPriceIds = newPercentageDiscount.appliesToPriceIds - this.isInvoiceLevel = newPercentageDiscount.isInvoiceLevel - this.adjustmentType = newPercentageDiscount.adjustmentType - this.percentageDiscount = newPercentageDiscount.percentageDiscount - additionalProperties(newPercentageDiscount.additionalProperties) + appliesToPriceIds = newPercentageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newPercentageDiscount.isInvoiceLevel + adjustmentType = newPercentageDiscount.adjustmentType + percentageDiscount = newPercentageDiscount.percentageDiscount + additionalProperties = + newPercentageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -32375,45 +26004,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun percentageDiscount(percentageDiscount: Double) = - percentageDiscount(JsonField.of(percentageDiscount)) - - @JsonProperty("percentage_discount") - @ExcludeMissing - fun percentageDiscount(percentageDiscount: JsonField) = apply { + fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32421,12 +26030,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPercentageDiscount = NewPercentageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - percentageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(percentageDiscount) { + "`percentageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -32501,67 +26125,38 @@ constructor( "NewPercentageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewUsageDiscount.Builder::class) @NoAutoDetect class NewUsageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("usage_discount") private val usageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun usageDiscount(): Double = usageDiscount.getRequired("usage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("usage_discount") @ExcludeMissing fun _usageDiscount() = usageDiscount + @JsonProperty("usage_discount") fun usageDiscount(): Double = usageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewUsageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - usageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32571,29 +26166,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var usageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var usageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newUsageDiscount: NewUsageDiscount) = apply { - this.appliesToPriceIds = newUsageDiscount.appliesToPriceIds - this.isInvoiceLevel = newUsageDiscount.isInvoiceLevel - this.adjustmentType = newUsageDiscount.adjustmentType - this.usageDiscount = newUsageDiscount.usageDiscount - additionalProperties(newUsageDiscount.additionalProperties) + appliesToPriceIds = newUsageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newUsageDiscount.isInvoiceLevel + adjustmentType = newUsageDiscount.adjustmentType + usageDiscount = newUsageDiscount.usageDiscount + additionalProperties = newUsageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -32601,45 +26190,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun usageDiscount(usageDiscount: Double) = - usageDiscount(JsonField.of(usageDiscount)) - - @JsonProperty("usage_discount") - @ExcludeMissing - fun usageDiscount(usageDiscount: JsonField) = apply { + fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32647,12 +26216,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewUsageDiscount = NewUsageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - usageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(usageDiscount) { + "`usageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -32727,69 +26311,38 @@ constructor( "NewUsageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewAmountDiscount.Builder::class) @NoAutoDetect class NewAmountDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("amount_discount") private val amountDiscount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun amountDiscount(): String = amountDiscount.getRequired("amount_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("amount_discount") - @ExcludeMissing - fun _amountDiscount() = amountDiscount + @JsonProperty("amount_discount") fun amountDiscount(): String = amountDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewAmountDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - amountDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32799,29 +26352,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var amountDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var amountDiscount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newAmountDiscount: NewAmountDiscount) = apply { - this.appliesToPriceIds = newAmountDiscount.appliesToPriceIds - this.isInvoiceLevel = newAmountDiscount.isInvoiceLevel - this.adjustmentType = newAmountDiscount.adjustmentType - this.amountDiscount = newAmountDiscount.amountDiscount - additionalProperties(newAmountDiscount.additionalProperties) + appliesToPriceIds = newAmountDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newAmountDiscount.isInvoiceLevel + adjustmentType = newAmountDiscount.adjustmentType + amountDiscount = newAmountDiscount.amountDiscount + additionalProperties = newAmountDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -32829,45 +26376,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun amountDiscount(amountDiscount: String) = - amountDiscount(JsonField.of(amountDiscount)) - - @JsonProperty("amount_discount") - @ExcludeMissing - fun amountDiscount(amountDiscount: JsonField) = apply { + fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32875,12 +26402,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewAmountDiscount = NewAmountDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - amountDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(amountDiscount) { + "`amountDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -32955,75 +26497,42 @@ constructor( "NewAmountDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMinimum.Builder::class) @NoAutoDetect class NewMinimum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("item_id") private val itemId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(): String = itemId.getRequired("item_id") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("minimum_amount") @ExcludeMissing fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMinimum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - minimumAmount() - itemId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33033,31 +26542,25 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var minimumAmount: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var minimumAmount: String? = null + private var itemId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMinimum: NewMinimum) = apply { - this.appliesToPriceIds = newMinimum.appliesToPriceIds - this.isInvoiceLevel = newMinimum.isInvoiceLevel - this.adjustmentType = newMinimum.adjustmentType - this.minimumAmount = newMinimum.minimumAmount - this.itemId = newMinimum.itemId - additionalProperties(newMinimum.additionalProperties) + appliesToPriceIds = newMinimum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMinimum.isInvoiceLevel + adjustmentType = newMinimum.adjustmentType + minimumAmount = newMinimum.minimumAmount + itemId = newMinimum.itemId + additionalProperties = newMinimum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -33065,53 +26568,28 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -33119,13 +26597,28 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMinimum = NewMinimum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - minimumAmount, - itemId, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, + checkNotNull(itemId) { "`itemId` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -33200,67 +26693,38 @@ constructor( "NewMinimum{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMaximum.Builder::class) @NoAutoDetect class NewMaximum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("maximum_amount") private val maximumAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("maximum_amount") @ExcludeMissing fun _maximumAmount() = maximumAmount + @JsonProperty("maximum_amount") fun maximumAmount(): String = maximumAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMaximum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - maximumAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33270,29 +26734,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var maximumAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMaximum: NewMaximum) = apply { - this.appliesToPriceIds = newMaximum.appliesToPriceIds - this.isInvoiceLevel = newMaximum.isInvoiceLevel - this.adjustmentType = newMaximum.adjustmentType - this.maximumAmount = newMaximum.maximumAmount - additionalProperties(newMaximum.additionalProperties) + appliesToPriceIds = newMaximum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMaximum.isInvoiceLevel + adjustmentType = newMaximum.adjustmentType + maximumAmount = newMaximum.maximumAmount + additionalProperties = newMaximum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -33300,45 +26758,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -33346,12 +26784,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMaximum = NewMaximum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - maximumAmount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(maximumAmount) { + "`maximumAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -33436,8 +26889,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun dateTime(): Optional = Optional.ofNullable(dateTime) fun billingCycleRelativeDate(): Optional = @@ -33463,15 +26914,6 @@ constructor( } } - fun validate(): StartDate = apply { - if (!validated) { - if (dateTime == null && billingCycleRelativeDate == null) { - throw OrbInvalidDataException("Unknown StartDate: $_json") - } - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -33556,8 +26998,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun dateTime(): Optional = Optional.ofNullable(dateTime) fun billingCycleRelativeDate(): Optional = @@ -33583,15 +27023,6 @@ constructor( } } - fun validate(): EndDate = apply { - if (!validated) { - if (dateTime == null && billingCycleRelativeDate == null) { - throw OrbInvalidDataException("Unknown EndDate: $_json") - } - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -33685,47 +27116,51 @@ constructor( "AddAdjustment{adjustment=$adjustment, startDate=$startDate, endDate=$endDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Edit.Builder::class) @NoAutoDetect class Edit + @JsonCreator private constructor( - private val priceIntervalId: String?, - private val startDate: StartDate?, - private val endDate: EndDate?, + @JsonProperty("price_interval_id") private val priceIntervalId: String, + @JsonProperty("start_date") private val startDate: StartDate?, + @JsonProperty("end_date") private val endDate: EndDate?, + @JsonProperty("fixed_fee_quantity_transitions") private val fixedFeeQuantityTransitions: List?, - private val billingCycleDay: Long?, - private val additionalProperties: Map, + @JsonProperty("billing_cycle_day") private val billingCycleDay: Long?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the price interval to edit. */ - @JsonProperty("price_interval_id") fun priceIntervalId(): String? = priceIntervalId + @JsonProperty("price_interval_id") fun priceIntervalId(): String = priceIntervalId /** * The updated start date of this price interval. If not specified, the start date will not * be updated. */ - @JsonProperty("start_date") fun startDate(): StartDate? = startDate + @JsonProperty("start_date") + fun startDate(): Optional = Optional.ofNullable(startDate) /** * The updated end date of this price interval. If not specified, the start date will not be * updated. */ - @JsonProperty("end_date") fun endDate(): EndDate? = endDate + @JsonProperty("end_date") fun endDate(): Optional = Optional.ofNullable(endDate) /** * A list of fixed fee quantity transitions to use for this price interval. Note that this * list will overwrite all existing fixed fee quantity transitions on the price interval. */ @JsonProperty("fixed_fee_quantity_transitions") - fun fixedFeeQuantityTransitions(): List? = - fixedFeeQuantityTransitions + fun fixedFeeQuantityTransitions(): Optional> = + Optional.ofNullable(fixedFeeQuantityTransitions) /** * The updated billing cycle day for this price interval. If not specified, the billing * cycle day will not be updated. Note that overlapping price intervals must have the same * billing cycle day. */ - @JsonProperty("billing_cycle_day") fun billingCycleDay(): Long? = billingCycleDay + @JsonProperty("billing_cycle_day") + fun billingCycleDay(): Optional = Optional.ofNullable(billingCycleDay) @JsonAnyGetter @ExcludeMissing @@ -33749,16 +27184,15 @@ constructor( @JvmSynthetic internal fun from(edit: Edit) = apply { - this.priceIntervalId = edit.priceIntervalId - this.startDate = edit.startDate - this.endDate = edit.endDate - this.fixedFeeQuantityTransitions = edit.fixedFeeQuantityTransitions - this.billingCycleDay = edit.billingCycleDay - additionalProperties(edit.additionalProperties) + priceIntervalId = edit.priceIntervalId + startDate = edit.startDate + endDate = edit.endDate + fixedFeeQuantityTransitions = edit.fixedFeeQuantityTransitions?.toMutableList() + billingCycleDay = edit.billingCycleDay + additionalProperties = edit.additionalProperties.toMutableMap() } /** The id of the price interval to edit. */ - @JsonProperty("price_interval_id") fun priceIntervalId(priceIntervalId: String) = apply { this.priceIntervalId = priceIntervalId } @@ -33767,14 +27201,12 @@ constructor( * The updated start date of this price interval. If not specified, the start date will * not be updated. */ - @JsonProperty("start_date") fun startDate(startDate: StartDate) = apply { this.startDate = startDate } /** * The updated end date of this price interval. If not specified, the start date will * not be updated. */ - @JsonProperty("end_date") fun endDate(endDate: EndDate) = apply { this.endDate = endDate } /** @@ -33782,7 +27214,6 @@ constructor( * this list will overwrite all existing fixed fee quantity transitions on the price * interval. */ - @JsonProperty("fixed_fee_quantity_transitions") fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: List ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -33792,25 +27223,29 @@ constructor( * cycle day will not be updated. Note that overlapping price intervals must have the * same billing cycle day. */ - @JsonProperty("billing_cycle_day") fun billingCycleDay(billingCycleDay: Long) = apply { this.billingCycleDay = billingCycleDay } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Edit = Edit( checkNotNull(priceIntervalId) { @@ -33833,8 +27268,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun dateTime(): Optional = Optional.ofNullable(dateTime) fun billingCycleRelativeDate(): Optional = @@ -33860,15 +27293,6 @@ constructor( } } - fun validate(): EndDate = apply { - if (!validated) { - if (dateTime == null && billingCycleRelativeDate == null) { - throw OrbInvalidDataException("Unknown EndDate: $_json") - } - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -33944,20 +27368,21 @@ constructor( } } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val quantity: Long?, - private val effectiveDate: OffsetDateTime?, - private val additionalProperties: Map, + @JsonProperty("quantity") private val quantity: Long, + @JsonProperty("effective_date") private val effectiveDate: OffsetDateTime, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The quantity of the fixed fee quantity transition. */ - @JsonProperty("quantity") fun quantity(): Long? = quantity + @JsonProperty("quantity") fun quantity(): Long = quantity /** The date that the fixed fee quantity transition should take effect. */ - @JsonProperty("effective_date") fun effectiveDate(): OffsetDateTime? = effectiveDate + @JsonProperty("effective_date") fun effectiveDate(): OffsetDateTime = effectiveDate @JsonAnyGetter @ExcludeMissing @@ -33978,29 +27403,27 @@ constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.quantity = fixedFeeQuantityTransition.quantity - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + quantity = fixedFeeQuantityTransition.quantity + effectiveDate = fixedFeeQuantityTransition.effectiveDate + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } /** The quantity of the fixed fee quantity transition. */ - @JsonProperty("quantity") fun quantity(quantity: Long) = apply { this.quantity = quantity } /** The date that the fixed fee quantity transition should take effect. */ - @JsonProperty("effective_date") fun effectiveDate(effectiveDate: OffsetDateTime) = apply { this.effectiveDate = effectiveDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -34008,6 +27431,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( checkNotNull(quantity) { "`quantity` is required but was not set" }, @@ -34045,8 +27476,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun dateTime(): Optional = Optional.ofNullable(dateTime) fun billingCycleRelativeDate(): Optional = @@ -34072,15 +27501,6 @@ constructor( } } - fun validate(): StartDate = apply { - if (!validated) { - if (dateTime == null && billingCycleRelativeDate == null) { - throw OrbInvalidDataException("Unknown StartDate: $_json") - } - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -34174,31 +27594,33 @@ constructor( "Edit{priceIntervalId=$priceIntervalId, startDate=$startDate, endDate=$endDate, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, billingCycleDay=$billingCycleDay, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = EditAdjustment.Builder::class) @NoAutoDetect class EditAdjustment + @JsonCreator private constructor( - private val adjustmentIntervalId: String?, - private val startDate: StartDate?, - private val endDate: EndDate?, - private val additionalProperties: Map, + @JsonProperty("adjustment_interval_id") private val adjustmentIntervalId: String, + @JsonProperty("start_date") private val startDate: StartDate?, + @JsonProperty("end_date") private val endDate: EndDate?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the adjustment interval to edit. */ @JsonProperty("adjustment_interval_id") - fun adjustmentIntervalId(): String? = adjustmentIntervalId + fun adjustmentIntervalId(): String = adjustmentIntervalId /** * The updated start date of this adjustment interval. If not specified, the start date will * not be updated. */ - @JsonProperty("start_date") fun startDate(): StartDate? = startDate + @JsonProperty("start_date") + fun startDate(): Optional = Optional.ofNullable(startDate) /** * The updated end date of this adjustment interval. If not specified, the start date will * not be updated. */ - @JsonProperty("end_date") fun endDate(): EndDate? = endDate + @JsonProperty("end_date") fun endDate(): Optional = Optional.ofNullable(endDate) @JsonAnyGetter @ExcludeMissing @@ -34220,14 +27642,13 @@ constructor( @JvmSynthetic internal fun from(editAdjustment: EditAdjustment) = apply { - this.adjustmentIntervalId = editAdjustment.adjustmentIntervalId - this.startDate = editAdjustment.startDate - this.endDate = editAdjustment.endDate - additionalProperties(editAdjustment.additionalProperties) + adjustmentIntervalId = editAdjustment.adjustmentIntervalId + startDate = editAdjustment.startDate + endDate = editAdjustment.endDate + additionalProperties = editAdjustment.additionalProperties.toMutableMap() } /** The id of the adjustment interval to edit. */ - @JsonProperty("adjustment_interval_id") fun adjustmentIntervalId(adjustmentIntervalId: String) = apply { this.adjustmentIntervalId = adjustmentIntervalId } @@ -34236,30 +27657,33 @@ constructor( * The updated start date of this adjustment interval. If not specified, the start date * will not be updated. */ - @JsonProperty("start_date") fun startDate(startDate: StartDate) = apply { this.startDate = startDate } /** * The updated end date of this adjustment interval. If not specified, the start date * will not be updated. */ - @JsonProperty("end_date") fun endDate(endDate: EndDate) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): EditAdjustment = EditAdjustment( checkNotNull(adjustmentIntervalId) { @@ -34280,8 +27704,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun dateTime(): Optional = Optional.ofNullable(dateTime) fun billingCycleRelativeDate(): Optional = @@ -34307,15 +27729,6 @@ constructor( } } - fun validate(): EndDate = apply { - if (!validated) { - if (dateTime == null && billingCycleRelativeDate == null) { - throw OrbInvalidDataException("Unknown EndDate: $_json") - } - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -34400,8 +27813,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun dateTime(): Optional = Optional.ofNullable(dateTime) fun billingCycleRelativeDate(): Optional = @@ -34427,15 +27838,6 @@ constructor( } } - fun validate(): StartDate = apply { - if (!validated) { - if (dateTime == null && billingCycleRelativeDate == null) { - throw OrbInvalidDataException("Unknown StartDate: $_json") - } - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsResponse.kt index bef43371..393dfc4a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionPriceIntervalsResponse.Builder::class) @NoAutoDetect class SubscriptionPriceIntervalsResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionPriceIntervalsResponse = apply { if (!validated) { metadata().validate() @@ -402,36 +451,37 @@ private constructor( @JvmSynthetic internal fun from(subscriptionPriceIntervalsResponse: SubscriptionPriceIntervalsResponse) = apply { - this.metadata = subscriptionPriceIntervalsResponse.metadata - this.id = subscriptionPriceIntervalsResponse.id - this.customer = subscriptionPriceIntervalsResponse.customer - this.plan = subscriptionPriceIntervalsResponse.plan - this.startDate = subscriptionPriceIntervalsResponse.startDate - this.endDate = subscriptionPriceIntervalsResponse.endDate - this.createdAt = subscriptionPriceIntervalsResponse.createdAt - this.currentBillingPeriodStartDate = + metadata = subscriptionPriceIntervalsResponse.metadata + id = subscriptionPriceIntervalsResponse.id + customer = subscriptionPriceIntervalsResponse.customer + plan = subscriptionPriceIntervalsResponse.plan + startDate = subscriptionPriceIntervalsResponse.startDate + endDate = subscriptionPriceIntervalsResponse.endDate + createdAt = subscriptionPriceIntervalsResponse.createdAt + currentBillingPeriodStartDate = subscriptionPriceIntervalsResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = + currentBillingPeriodEndDate = subscriptionPriceIntervalsResponse.currentBillingPeriodEndDate - this.status = subscriptionPriceIntervalsResponse.status - this.trialInfo = subscriptionPriceIntervalsResponse.trialInfo - this.activePlanPhaseOrder = subscriptionPriceIntervalsResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = + status = subscriptionPriceIntervalsResponse.status + trialInfo = subscriptionPriceIntervalsResponse.trialInfo + activePlanPhaseOrder = subscriptionPriceIntervalsResponse.activePlanPhaseOrder + fixedFeeQuantitySchedule = subscriptionPriceIntervalsResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = subscriptionPriceIntervalsResponse.defaultInvoiceMemo - this.autoCollection = subscriptionPriceIntervalsResponse.autoCollection - this.netTerms = subscriptionPriceIntervalsResponse.netTerms - this.redeemedCoupon = subscriptionPriceIntervalsResponse.redeemedCoupon - this.billingCycleDay = subscriptionPriceIntervalsResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + defaultInvoiceMemo = subscriptionPriceIntervalsResponse.defaultInvoiceMemo + autoCollection = subscriptionPriceIntervalsResponse.autoCollection + netTerms = subscriptionPriceIntervalsResponse.netTerms + redeemedCoupon = subscriptionPriceIntervalsResponse.redeemedCoupon + billingCycleDay = subscriptionPriceIntervalsResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionPriceIntervalsResponse.billingCycleAnchorConfiguration - this.invoicingThreshold = subscriptionPriceIntervalsResponse.invoicingThreshold - this.priceIntervals = subscriptionPriceIntervalsResponse.priceIntervals - this.adjustmentIntervals = subscriptionPriceIntervalsResponse.adjustmentIntervals - this.discountIntervals = subscriptionPriceIntervalsResponse.discountIntervals - this.minimumIntervals = subscriptionPriceIntervalsResponse.minimumIntervals - this.maximumIntervals = subscriptionPriceIntervalsResponse.maximumIntervals - additionalProperties(subscriptionPriceIntervalsResponse.additionalProperties) + invoicingThreshold = subscriptionPriceIntervalsResponse.invoicingThreshold + priceIntervals = subscriptionPriceIntervalsResponse.priceIntervals + adjustmentIntervals = subscriptionPriceIntervalsResponse.adjustmentIntervals + discountIntervals = subscriptionPriceIntervalsResponse.discountIntervals + minimumIntervals = subscriptionPriceIntervalsResponse.minimumIntervals + maximumIntervals = subscriptionPriceIntervalsResponse.maximumIntervals + additionalProperties = + subscriptionPriceIntervalsResponse.additionalProperties.toMutableMap() } /** @@ -446,13 +496,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -492,8 +540,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -510,30 +556,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -549,8 +587,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -568,8 +604,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -577,14 +611,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -592,8 +622,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -601,8 +629,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -618,8 +644,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -636,8 +660,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -654,15 +676,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -681,8 +699,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -691,8 +707,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -700,8 +714,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -711,8 +723,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -722,8 +732,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -733,8 +741,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -744,8 +750,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -755,26 +759,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionPriceIntervalsResponse = SubscriptionPriceIntervalsResponse( metadata, @@ -806,20 +813,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -854,6 +868,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -883,24 +899,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -909,8 +921,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -919,8 +929,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -928,8 +936,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -937,18 +943,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1202,22 +1213,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1284,6 +1308,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1317,20 +1343,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1344,8 +1369,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1355,8 +1378,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1366,8 +1387,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1376,15 +1395,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1400,20 +1415,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1421,6 +1433,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1504,22 +1524,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1587,6 +1620,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1621,21 +1656,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1649,8 +1682,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1660,8 +1691,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1671,8 +1700,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1681,15 +1708,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1705,20 +1728,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1726,6 +1746,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1809,22 +1837,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1889,6 +1930,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1922,20 +1965,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1949,8 +1991,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1960,8 +2000,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1971,8 +2009,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1981,15 +2017,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2005,20 +2037,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2026,6 +2055,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2109,23 +2146,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2196,6 +2248,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2231,21 +2285,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2259,8 +2311,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2270,8 +2320,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2281,8 +2329,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2291,15 +2337,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2315,8 +2357,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2325,18 +2365,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2344,6 +2381,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2428,22 +2473,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2508,6 +2566,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2541,20 +2601,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2568,8 +2626,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2579,8 +2635,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2590,8 +2644,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2600,15 +2652,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2624,20 +2672,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2645,6 +2690,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2747,18 +2800,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2803,6 +2857,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2829,10 +2885,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2849,8 +2906,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2863,8 +2918,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2877,24 +2930,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3102,21 +3158,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3162,6 +3229,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3193,21 +3262,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3217,8 +3284,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3227,8 +3292,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3237,8 +3300,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3246,8 +3307,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3257,8 +3316,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3266,12 +3323,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3279,6 +3335,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3360,21 +3424,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3422,6 +3497,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3453,21 +3530,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3481,8 +3556,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3491,8 +3564,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3501,8 +3572,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3510,8 +3579,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3521,8 +3588,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3530,12 +3595,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3543,6 +3607,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3624,21 +3696,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3690,6 +3773,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3721,20 +3806,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3750,8 +3833,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3760,8 +3841,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3770,8 +3849,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3779,8 +3856,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3790,8 +3865,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3799,12 +3872,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3812,6 +3884,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3894,19 +3974,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3928,6 +4015,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3955,53 +4044,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4030,20 +4116,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4091,6 +4186,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4120,20 +4217,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4142,8 +4237,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4151,8 +4244,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4162,8 +4253,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4179,26 +4268,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4233,19 +4325,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4265,23 +4358,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4302,20 +4400,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4363,6 +4470,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4392,20 +4501,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4414,8 +4521,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4423,8 +4528,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4434,8 +4537,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4451,26 +4552,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4504,23 +4608,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5075,6 +5193,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5111,21 +5231,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5138,8 +5256,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5154,8 +5270,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5616,8 +5730,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5625,8 +5737,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5643,8 +5753,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5662,8 +5770,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5681,26 +5787,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5715,18 +5824,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5743,6 +5857,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5768,41 +5884,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5810,6 +5920,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5855,18 +5973,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5884,6 +6007,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5909,46 +6034,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6039,16 +6163,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6058,6 +6183,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6079,30 +6206,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeParams.kt index cddab017..d05b06e1 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeParams.kt @@ -18,12 +18,12 @@ import com.withorb.api.core.BaseSerializer import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField -import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -170,65 +170,74 @@ constructor( } } - @JsonDeserialize(builder = SubscriptionSchedulePlanChangeBody.Builder::class) @NoAutoDetect class SubscriptionSchedulePlanChangeBody + @JsonCreator internal constructor( - private val changeOption: ChangeOption?, - private val addAdjustments: List?, - private val addPrices: List?, + @JsonProperty("change_option") private val changeOption: ChangeOption, + @JsonProperty("add_adjustments") private val addAdjustments: List?, + @JsonProperty("add_prices") private val addPrices: List?, + @JsonProperty("align_billing_with_plan_change_date") private val alignBillingWithPlanChangeDate: Boolean?, - private val autoCollection: Boolean?, + @JsonProperty("auto_collection") private val autoCollection: Boolean?, + @JsonProperty("billing_cycle_alignment") private val billingCycleAlignment: BillingCycleAlignment?, + @JsonProperty("billing_cycle_anchor_configuration") private val billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration?, - private val changeDate: OffsetDateTime?, - private val couponRedemptionCode: String?, - private val creditsOverageRate: Double?, - private val defaultInvoiceMemo: String?, - private val externalPlanId: String?, - private val filter: String?, - private val initialPhaseOrder: Long?, - private val invoicingThreshold: String?, - private val netTerms: Long?, - private val perCreditOverageAmount: Double?, - private val planId: String?, - private val planVersionNumber: Long?, - private val priceOverrides: List?, - private val removeAdjustments: List?, - private val removePrices: List?, + @JsonProperty("change_date") private val changeDate: OffsetDateTime?, + @JsonProperty("coupon_redemption_code") private val couponRedemptionCode: String?, + @JsonProperty("credits_overage_rate") private val creditsOverageRate: Double?, + @JsonProperty("default_invoice_memo") private val defaultInvoiceMemo: String?, + @JsonProperty("external_plan_id") private val externalPlanId: String?, + @JsonProperty("filter") private val filter: String?, + @JsonProperty("initial_phase_order") private val initialPhaseOrder: Long?, + @JsonProperty("invoicing_threshold") private val invoicingThreshold: String?, + @JsonProperty("net_terms") private val netTerms: Long?, + @JsonProperty("per_credit_overage_amount") private val perCreditOverageAmount: Double?, + @JsonProperty("plan_id") private val planId: String?, + @JsonProperty("plan_version_number") private val planVersionNumber: Long?, + @JsonProperty("price_overrides") private val priceOverrides: List?, + @JsonProperty("remove_adjustments") private val removeAdjustments: List?, + @JsonProperty("remove_prices") private val removePrices: List?, + @JsonProperty("replace_adjustments") private val replaceAdjustments: List?, - private val replacePrices: List?, - private val trialDurationDays: Long?, - private val additionalProperties: Map, + @JsonProperty("replace_prices") private val replacePrices: List?, + @JsonProperty("trial_duration_days") private val trialDurationDays: Long?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("change_option") fun changeOption(): ChangeOption? = changeOption + @JsonProperty("change_option") fun changeOption(): ChangeOption = changeOption /** * Additional adjustments to be added to the subscription. (Only available for accounts that * have migrated off of legacy subscription overrides) */ - @JsonProperty("add_adjustments") fun addAdjustments(): List? = addAdjustments + @JsonProperty("add_adjustments") + fun addAdjustments(): Optional> = Optional.ofNullable(addAdjustments) /** * Additional prices to be added to the subscription. (Only available for accounts that have * migrated off of legacy subscription overrides) */ - @JsonProperty("add_prices") fun addPrices(): List? = addPrices + @JsonProperty("add_prices") + fun addPrices(): Optional> = Optional.ofNullable(addPrices) /** * [DEPRECATED] Use billing_cycle_alignment instead. Reset billing periods to be aligned * with the plan change's effective date. */ @JsonProperty("align_billing_with_plan_change_date") - fun alignBillingWithPlanChangeDate(): Boolean? = alignBillingWithPlanChangeDate + fun alignBillingWithPlanChangeDate(): Optional = + Optional.ofNullable(alignBillingWithPlanChangeDate) /** * Determines whether issued invoices for this subscription will automatically be charged * with the saved payment method on the due date. If not specified, this defaults to the * behavior configured for this customer. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") + fun autoCollection(): Optional = Optional.ofNullable(autoCollection) /** * Reset billing periods to be aligned with the plan change's effective date or start of the @@ -236,17 +245,19 @@ constructor( * alignment. */ @JsonProperty("billing_cycle_alignment") - fun billingCycleAlignment(): BillingCycleAlignment? = billingCycleAlignment + fun billingCycleAlignment(): Optional = + Optional.ofNullable(billingCycleAlignment) @JsonProperty("billing_cycle_anchor_configuration") - fun billingCycleAnchorConfiguration(): BillingCycleAnchorConfiguration? = - billingCycleAnchorConfiguration + fun billingCycleAnchorConfiguration(): Optional = + Optional.ofNullable(billingCycleAnchorConfiguration) /** * The date that the plan change should take effect. This parameter can only be passed if * the `change_option` is `requested_date`. */ - @JsonProperty("change_date") fun changeDate(): OffsetDateTime? = changeDate + @JsonProperty("change_date") + fun changeDate(): Optional = Optional.ofNullable(changeDate) /** * Redemption code to be used for this subscription. If the coupon cannot be found by its @@ -254,21 +265,24 @@ constructor( * subscription creation or plan change will not be scheduled. */ @JsonProperty("coupon_redemption_code") - fun couponRedemptionCode(): String? = couponRedemptionCode + fun couponRedemptionCode(): Optional = Optional.ofNullable(couponRedemptionCode) - @JsonProperty("credits_overage_rate") fun creditsOverageRate(): Double? = creditsOverageRate + @JsonProperty("credits_overage_rate") + fun creditsOverageRate(): Optional = Optional.ofNullable(creditsOverageRate) /** * Determines the default memo on this subscription's invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") fun defaultInvoiceMemo(): String? = defaultInvoiceMemo + @JsonProperty("default_invoice_memo") + fun defaultInvoiceMemo(): Optional = Optional.ofNullable(defaultInvoiceMemo) /** * The external_plan_id of the plan that the given subscription should be switched to. Note * that either this property or `plan_id` must be specified. */ - @JsonProperty("external_plan_id") fun externalPlanId(): String? = externalPlanId + @JsonProperty("external_plan_id") + fun externalPlanId(): Optional = Optional.ofNullable(externalPlanId) /** * An additional filter to apply to usage queries. This filter must be expressed as a @@ -276,74 +290,83 @@ constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties). If * null, usage queries will not include any additional filter. */ - @JsonProperty("filter") fun filter(): String? = filter + @JsonProperty("filter") fun filter(): Optional = Optional.ofNullable(filter) /** The phase of the plan to start with */ - @JsonProperty("initial_phase_order") fun initialPhaseOrder(): Long? = initialPhaseOrder + @JsonProperty("initial_phase_order") + fun initialPhaseOrder(): Optional = Optional.ofNullable(initialPhaseOrder) /** * When this subscription's accrued usage reaches this threshold, an invoice will be issued * for the subscription. If not specified, invoices will only be issued at the end of the * billing period. */ - @JsonProperty("invoicing_threshold") fun invoicingThreshold(): String? = invoicingThreshold + @JsonProperty("invoicing_threshold") + fun invoicingThreshold(): Optional = Optional.ofNullable(invoicingThreshold) /** * The net terms determines the difference between the invoice date and the issue date for * the invoice. If you intend the invoice to be due on issue, set this to 0. If not * provided, this defaults to the value specified in the plan. */ - @JsonProperty("net_terms") fun netTerms(): Long? = netTerms + @JsonProperty("net_terms") fun netTerms(): Optional = Optional.ofNullable(netTerms) @JsonProperty("per_credit_overage_amount") - fun perCreditOverageAmount(): Double? = perCreditOverageAmount + fun perCreditOverageAmount(): Optional = Optional.ofNullable(perCreditOverageAmount) /** * The plan that the given subscription should be switched to. Note that either this * property or `external_plan_id` must be specified. */ - @JsonProperty("plan_id") fun planId(): String? = planId + @JsonProperty("plan_id") fun planId(): Optional = Optional.ofNullable(planId) /** * Specifies which version of the plan to change to. If null, the default version will be * used. */ - @JsonProperty("plan_version_number") fun planVersionNumber(): Long? = planVersionNumber + @JsonProperty("plan_version_number") + fun planVersionNumber(): Optional = Optional.ofNullable(planVersionNumber) /** Optionally provide a list of overrides for prices on the plan */ - @JsonProperty("price_overrides") fun priceOverrides(): List? = priceOverrides + @JsonProperty("price_overrides") + fun priceOverrides(): Optional> = Optional.ofNullable(priceOverrides) /** * Plan adjustments to be removed from the subscription. (Only available for accounts that * have migrated off of legacy subscription overrides) */ @JsonProperty("remove_adjustments") - fun removeAdjustments(): List? = removeAdjustments + fun removeAdjustments(): Optional> = + Optional.ofNullable(removeAdjustments) /** * Plan prices to be removed from the subscription. (Only available for accounts that have * migrated off of legacy subscription overrides) */ - @JsonProperty("remove_prices") fun removePrices(): List? = removePrices + @JsonProperty("remove_prices") + fun removePrices(): Optional> = Optional.ofNullable(removePrices) /** * Plan adjustments to be replaced with additional adjustments on the subscription. (Only * available for accounts that have migrated off of legacy subscription overrides) */ @JsonProperty("replace_adjustments") - fun replaceAdjustments(): List? = replaceAdjustments + fun replaceAdjustments(): Optional> = + Optional.ofNullable(replaceAdjustments) /** * Plan prices to be replaced with additional prices on the subscription. (Only available * for accounts that have migrated off of legacy subscription overrides) */ - @JsonProperty("replace_prices") fun replacePrices(): List? = replacePrices + @JsonProperty("replace_prices") + fun replacePrices(): Optional> = Optional.ofNullable(replacePrices) /** * The duration of the trial period in days. If not provided, this defaults to the value * specified in the plan. If `0` is provided, the trial on the plan will be skipped. */ - @JsonProperty("trial_duration_days") fun trialDurationDays(): Long? = trialDurationDays + @JsonProperty("trial_duration_days") + fun trialDurationDays(): Optional = Optional.ofNullable(trialDurationDays) @JsonAnyGetter @ExcludeMissing @@ -389,39 +412,39 @@ constructor( internal fun from( subscriptionSchedulePlanChangeBody: SubscriptionSchedulePlanChangeBody ) = apply { - this.changeOption = subscriptionSchedulePlanChangeBody.changeOption - this.addAdjustments = subscriptionSchedulePlanChangeBody.addAdjustments - this.addPrices = subscriptionSchedulePlanChangeBody.addPrices - this.alignBillingWithPlanChangeDate = + changeOption = subscriptionSchedulePlanChangeBody.changeOption + addAdjustments = subscriptionSchedulePlanChangeBody.addAdjustments?.toMutableList() + addPrices = subscriptionSchedulePlanChangeBody.addPrices?.toMutableList() + alignBillingWithPlanChangeDate = subscriptionSchedulePlanChangeBody.alignBillingWithPlanChangeDate - this.autoCollection = subscriptionSchedulePlanChangeBody.autoCollection - this.billingCycleAlignment = - subscriptionSchedulePlanChangeBody.billingCycleAlignment - this.billingCycleAnchorConfiguration = + autoCollection = subscriptionSchedulePlanChangeBody.autoCollection + billingCycleAlignment = subscriptionSchedulePlanChangeBody.billingCycleAlignment + billingCycleAnchorConfiguration = subscriptionSchedulePlanChangeBody.billingCycleAnchorConfiguration - this.changeDate = subscriptionSchedulePlanChangeBody.changeDate - this.couponRedemptionCode = subscriptionSchedulePlanChangeBody.couponRedemptionCode - this.creditsOverageRate = subscriptionSchedulePlanChangeBody.creditsOverageRate - this.defaultInvoiceMemo = subscriptionSchedulePlanChangeBody.defaultInvoiceMemo - this.externalPlanId = subscriptionSchedulePlanChangeBody.externalPlanId - this.filter = subscriptionSchedulePlanChangeBody.filter - this.initialPhaseOrder = subscriptionSchedulePlanChangeBody.initialPhaseOrder - this.invoicingThreshold = subscriptionSchedulePlanChangeBody.invoicingThreshold - this.netTerms = subscriptionSchedulePlanChangeBody.netTerms - this.perCreditOverageAmount = - subscriptionSchedulePlanChangeBody.perCreditOverageAmount - this.planId = subscriptionSchedulePlanChangeBody.planId - this.planVersionNumber = subscriptionSchedulePlanChangeBody.planVersionNumber - this.priceOverrides = subscriptionSchedulePlanChangeBody.priceOverrides - this.removeAdjustments = subscriptionSchedulePlanChangeBody.removeAdjustments - this.removePrices = subscriptionSchedulePlanChangeBody.removePrices - this.replaceAdjustments = subscriptionSchedulePlanChangeBody.replaceAdjustments - this.replacePrices = subscriptionSchedulePlanChangeBody.replacePrices - this.trialDurationDays = subscriptionSchedulePlanChangeBody.trialDurationDays - additionalProperties(subscriptionSchedulePlanChangeBody.additionalProperties) + changeDate = subscriptionSchedulePlanChangeBody.changeDate + couponRedemptionCode = subscriptionSchedulePlanChangeBody.couponRedemptionCode + creditsOverageRate = subscriptionSchedulePlanChangeBody.creditsOverageRate + defaultInvoiceMemo = subscriptionSchedulePlanChangeBody.defaultInvoiceMemo + externalPlanId = subscriptionSchedulePlanChangeBody.externalPlanId + filter = subscriptionSchedulePlanChangeBody.filter + initialPhaseOrder = subscriptionSchedulePlanChangeBody.initialPhaseOrder + invoicingThreshold = subscriptionSchedulePlanChangeBody.invoicingThreshold + netTerms = subscriptionSchedulePlanChangeBody.netTerms + perCreditOverageAmount = subscriptionSchedulePlanChangeBody.perCreditOverageAmount + planId = subscriptionSchedulePlanChangeBody.planId + planVersionNumber = subscriptionSchedulePlanChangeBody.planVersionNumber + priceOverrides = subscriptionSchedulePlanChangeBody.priceOverrides?.toMutableList() + removeAdjustments = + subscriptionSchedulePlanChangeBody.removeAdjustments?.toMutableList() + removePrices = subscriptionSchedulePlanChangeBody.removePrices?.toMutableList() + replaceAdjustments = + subscriptionSchedulePlanChangeBody.replaceAdjustments?.toMutableList() + replacePrices = subscriptionSchedulePlanChangeBody.replacePrices?.toMutableList() + trialDurationDays = subscriptionSchedulePlanChangeBody.trialDurationDays + additionalProperties = + subscriptionSchedulePlanChangeBody.additionalProperties.toMutableMap() } - @JsonProperty("change_option") fun changeOption(changeOption: ChangeOption) = apply { this.changeOption = changeOption } @@ -430,7 +453,6 @@ constructor( * Additional adjustments to be added to the subscription. (Only available for accounts * that have migrated off of legacy subscription overrides) */ - @JsonProperty("add_adjustments") fun addAdjustments(addAdjustments: List) = apply { this.addAdjustments = addAdjustments } @@ -439,14 +461,12 @@ constructor( * Additional prices to be added to the subscription. (Only available for accounts that * have migrated off of legacy subscription overrides) */ - @JsonProperty("add_prices") fun addPrices(addPrices: List) = apply { this.addPrices = addPrices } /** * [DEPRECATED] Use billing_cycle_alignment instead. Reset billing periods to be aligned * with the plan change's effective date. */ - @JsonProperty("align_billing_with_plan_change_date") fun alignBillingWithPlanChangeDate(alignBillingWithPlanChangeDate: Boolean) = apply { this.alignBillingWithPlanChangeDate = alignBillingWithPlanChangeDate } @@ -456,7 +476,6 @@ constructor( * charged with the saved payment method on the due date. If not specified, this * defaults to the behavior configured for this customer. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } @@ -466,12 +485,10 @@ constructor( * the month. Defaults to `unchanged` which keeps subscription's existing billing cycle * alignment. */ - @JsonProperty("billing_cycle_alignment") fun billingCycleAlignment(billingCycleAlignment: BillingCycleAlignment) = apply { this.billingCycleAlignment = billingCycleAlignment } - @JsonProperty("billing_cycle_anchor_configuration") fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -480,7 +497,6 @@ constructor( * The date that the plan change should take effect. This parameter can only be passed * if the `change_option` is `requested_date`. */ - @JsonProperty("change_date") fun changeDate(changeDate: OffsetDateTime) = apply { this.changeDate = changeDate } /** @@ -488,12 +504,10 @@ constructor( * its redemption code, or cannot be redeemed, an error response will be returned and * the subscription creation or plan change will not be scheduled. */ - @JsonProperty("coupon_redemption_code") fun couponRedemptionCode(couponRedemptionCode: String) = apply { this.couponRedemptionCode = couponRedemptionCode } - @JsonProperty("credits_overage_rate") fun creditsOverageRate(creditsOverageRate: Double) = apply { this.creditsOverageRate = creditsOverageRate } @@ -502,7 +516,6 @@ constructor( * Determines the default memo on this subscription's invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") fun defaultInvoiceMemo(defaultInvoiceMemo: String) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -511,7 +524,6 @@ constructor( * The external_plan_id of the plan that the given subscription should be switched to. * Note that either this property or `plan_id` must be specified. */ - @JsonProperty("external_plan_id") fun externalPlanId(externalPlanId: String) = apply { this.externalPlanId = externalPlanId } @@ -522,10 +534,9 @@ constructor( * [computed property](../guides/extensibility/advanced-metrics#computed-properties). If * null, usage queries will not include any additional filter. */ - @JsonProperty("filter") fun filter(filter: String) = apply { this.filter = filter } + fun filter(filter: String) = apply { this.filter = filter } /** The phase of the plan to start with */ - @JsonProperty("initial_phase_order") fun initialPhaseOrder(initialPhaseOrder: Long) = apply { this.initialPhaseOrder = initialPhaseOrder } @@ -535,7 +546,6 @@ constructor( * issued for the subscription. If not specified, invoices will only be issued at the * end of the billing period. */ - @JsonProperty("invoicing_threshold") fun invoicingThreshold(invoicingThreshold: String) = apply { this.invoicingThreshold = invoicingThreshold } @@ -545,10 +555,8 @@ constructor( * for the invoice. If you intend the invoice to be due on issue, set this to 0. If not * provided, this defaults to the value specified in the plan. */ - @JsonProperty("net_terms") fun netTerms(netTerms: Long) = apply { this.netTerms = netTerms } - @JsonProperty("per_credit_overage_amount") fun perCreditOverageAmount(perCreditOverageAmount: Double) = apply { this.perCreditOverageAmount = perCreditOverageAmount } @@ -557,19 +565,17 @@ constructor( * The plan that the given subscription should be switched to. Note that either this * property or `external_plan_id` must be specified. */ - @JsonProperty("plan_id") fun planId(planId: String) = apply { this.planId = planId } + fun planId(planId: String) = apply { this.planId = planId } /** * Specifies which version of the plan to change to. If null, the default version will * be used. */ - @JsonProperty("plan_version_number") fun planVersionNumber(planVersionNumber: Long) = apply { this.planVersionNumber = planVersionNumber } /** Optionally provide a list of overrides for prices on the plan */ - @JsonProperty("price_overrides") fun priceOverrides(priceOverrides: List) = apply { this.priceOverrides = priceOverrides } @@ -578,7 +584,6 @@ constructor( * Plan adjustments to be removed from the subscription. (Only available for accounts * that have migrated off of legacy subscription overrides) */ - @JsonProperty("remove_adjustments") fun removeAdjustments(removeAdjustments: List) = apply { this.removeAdjustments = removeAdjustments } @@ -587,7 +592,6 @@ constructor( * Plan prices to be removed from the subscription. (Only available for accounts that * have migrated off of legacy subscription overrides) */ - @JsonProperty("remove_prices") fun removePrices(removePrices: List) = apply { this.removePrices = removePrices } @@ -596,7 +600,6 @@ constructor( * Plan adjustments to be replaced with additional adjustments on the subscription. * (Only available for accounts that have migrated off of legacy subscription overrides) */ - @JsonProperty("replace_adjustments") fun replaceAdjustments(replaceAdjustments: List) = apply { this.replaceAdjustments = replaceAdjustments } @@ -605,7 +608,6 @@ constructor( * Plan prices to be replaced with additional prices on the subscription. (Only * available for accounts that have migrated off of legacy subscription overrides) */ - @JsonProperty("replace_prices") fun replacePrices(replacePrices: List) = apply { this.replacePrices = replacePrices } @@ -614,25 +616,29 @@ constructor( * The duration of the trial period in days. If not provided, this defaults to the value * specified in the plan. If `0` is provided, the trial on the plan will be skipped. */ - @JsonProperty("trial_duration_days") fun trialDurationDays(trialDurationDays: Long) = apply { this.trialDurationDays = trialDurationDays } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionSchedulePlanChangeBody = SubscriptionSchedulePlanChangeBody( checkNotNull(changeOption) { "`changeOption` is required but was not set" }, @@ -1220,36 +1226,40 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = AddAdjustment.Builder::class) @NoAutoDetect class AddAdjustment + @JsonCreator private constructor( - private val adjustment: Adjustment?, - private val startDate: OffsetDateTime?, - private val endDate: OffsetDateTime?, - private val planPhaseOrder: Long?, - private val additionalProperties: Map, + @JsonProperty("adjustment") private val adjustment: Adjustment, + @JsonProperty("start_date") private val startDate: OffsetDateTime?, + @JsonProperty("end_date") private val endDate: OffsetDateTime?, + @JsonProperty("plan_phase_order") private val planPhaseOrder: Long?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(): Adjustment? = adjustment + @JsonProperty("adjustment") fun adjustment(): Adjustment = adjustment /** * The start date of the adjustment interval. This is the date that the adjustment will * start affecting prices on the subscription. If null, the adjustment will start when the * phase or subscription starts. */ - @JsonProperty("start_date") fun startDate(): OffsetDateTime? = startDate + @JsonProperty("start_date") + fun startDate(): Optional = Optional.ofNullable(startDate) /** * The end date of the adjustment interval. This is the date that the adjustment will stop * affecting prices on the subscription. If null, the adjustment will start when the phase * or subscription starts. */ - @JsonProperty("end_date") fun endDate(): OffsetDateTime? = endDate + @JsonProperty("end_date") + fun endDate(): Optional = Optional.ofNullable(endDate) /** The phase to add this adjustment to. */ - @JsonProperty("plan_phase_order") fun planPhaseOrder(): Long? = planPhaseOrder + @JsonProperty("plan_phase_order") + fun planPhaseOrder(): Optional = Optional.ofNullable(planPhaseOrder) @JsonAnyGetter @ExcludeMissing @@ -1272,15 +1282,14 @@ constructor( @JvmSynthetic internal fun from(addAdjustment: AddAdjustment) = apply { - this.adjustment = addAdjustment.adjustment - this.startDate = addAdjustment.startDate - this.endDate = addAdjustment.endDate - this.planPhaseOrder = addAdjustment.planPhaseOrder - additionalProperties(addAdjustment.additionalProperties) + adjustment = addAdjustment.adjustment + startDate = addAdjustment.startDate + endDate = addAdjustment.endDate + planPhaseOrder = addAdjustment.planPhaseOrder + additionalProperties = addAdjustment.additionalProperties.toMutableMap() } /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(adjustment: Adjustment) = apply { this.adjustment = adjustment } /** @@ -1288,7 +1297,6 @@ constructor( * start affecting prices on the subscription. If null, the adjustment will start when * the phase or subscription starts. */ - @JsonProperty("start_date") fun startDate(startDate: OffsetDateTime) = apply { this.startDate = startDate } /** @@ -1296,29 +1304,32 @@ constructor( * stop affecting prices on the subscription. If null, the adjustment will start when * the phase or subscription starts. */ - @JsonProperty("end_date") fun endDate(endDate: OffsetDateTime) = apply { this.endDate = endDate } /** The phase to add this adjustment to. */ - @JsonProperty("plan_phase_order") fun planPhaseOrder(planPhaseOrder: Long) = apply { this.planPhaseOrder = planPhaseOrder } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddAdjustment = AddAdjustment( checkNotNull(adjustment) { "`adjustment` is required but was not set" }, @@ -1341,8 +1352,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newPercentageDiscount(): Optional = Optional.ofNullable(newPercentageDiscount) @@ -1393,26 +1402,6 @@ constructor( } } - fun validate(): Adjustment = apply { - if (!validated) { - if ( - newPercentageDiscount == null && - newUsageDiscount == null && - newAmountDiscount == null && - newMinimum == null && - newMaximum == null - ) { - throw OrbInvalidDataException("Unknown Adjustment: $_json") - } - newPercentageDiscount?.validate() - newUsageDiscount?.validate() - newAmountDiscount?.validate() - newMinimum?.validate() - newMaximum?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -1482,40 +1471,29 @@ constructor( when (adjustmentType) { "percentage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newPercentageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newPercentageDiscount = it, _json = json) + } } "usage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newUsageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newUsageDiscount = it, _json = json) + } } "amount_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newAmountDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newAmountDiscount = it, _json = json) + } } "minimum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMinimum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMinimum = it, _json = json) + } } "maximum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMaximum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMaximum = it, _json = json) + } } } @@ -1545,70 +1523,39 @@ constructor( } } - @JsonDeserialize(builder = NewPercentageDiscount.Builder::class) @NoAutoDetect class NewPercentageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun percentageDiscount(): Double = - percentageDiscount.getRequired("percentage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType @JsonProperty("percentage_discount") - @ExcludeMissing - fun _percentageDiscount() = percentageDiscount + fun percentageDiscount(): Double = percentageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPercentageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - percentageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1618,29 +1565,24 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var percentageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var percentageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPercentageDiscount: NewPercentageDiscount) = apply { - this.appliesToPriceIds = newPercentageDiscount.appliesToPriceIds - this.isInvoiceLevel = newPercentageDiscount.isInvoiceLevel - this.adjustmentType = newPercentageDiscount.adjustmentType - this.percentageDiscount = newPercentageDiscount.percentageDiscount - additionalProperties(newPercentageDiscount.additionalProperties) + appliesToPriceIds = newPercentageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newPercentageDiscount.isInvoiceLevel + adjustmentType = newPercentageDiscount.adjustmentType + percentageDiscount = newPercentageDiscount.percentageDiscount + additionalProperties = + newPercentageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1648,45 +1590,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun percentageDiscount(percentageDiscount: Double) = - percentageDiscount(JsonField.of(percentageDiscount)) - - @JsonProperty("percentage_discount") - @ExcludeMissing - fun percentageDiscount(percentageDiscount: JsonField) = apply { + fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1694,12 +1616,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPercentageDiscount = NewPercentageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - percentageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(percentageDiscount) { + "`percentageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -1774,67 +1711,38 @@ constructor( "NewPercentageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewUsageDiscount.Builder::class) @NoAutoDetect class NewUsageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("usage_discount") private val usageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun usageDiscount(): Double = usageDiscount.getRequired("usage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("usage_discount") @ExcludeMissing fun _usageDiscount() = usageDiscount + @JsonProperty("usage_discount") fun usageDiscount(): Double = usageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewUsageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - usageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -1844,29 +1752,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var usageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var usageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newUsageDiscount: NewUsageDiscount) = apply { - this.appliesToPriceIds = newUsageDiscount.appliesToPriceIds - this.isInvoiceLevel = newUsageDiscount.isInvoiceLevel - this.adjustmentType = newUsageDiscount.adjustmentType - this.usageDiscount = newUsageDiscount.usageDiscount - additionalProperties(newUsageDiscount.additionalProperties) + appliesToPriceIds = newUsageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newUsageDiscount.isInvoiceLevel + adjustmentType = newUsageDiscount.adjustmentType + usageDiscount = newUsageDiscount.usageDiscount + additionalProperties = newUsageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1874,45 +1776,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun usageDiscount(usageDiscount: Double) = - usageDiscount(JsonField.of(usageDiscount)) - - @JsonProperty("usage_discount") - @ExcludeMissing - fun usageDiscount(usageDiscount: JsonField) = apply { + fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1920,12 +1802,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewUsageDiscount = NewUsageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - usageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(usageDiscount) { + "`usageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -2000,69 +1897,38 @@ constructor( "NewUsageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewAmountDiscount.Builder::class) @NoAutoDetect class NewAmountDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("amount_discount") private val amountDiscount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun amountDiscount(): String = amountDiscount.getRequired("amount_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("amount_discount") - @ExcludeMissing - fun _amountDiscount() = amountDiscount + @JsonProperty("amount_discount") fun amountDiscount(): String = amountDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewAmountDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - amountDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2072,29 +1938,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var amountDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var amountDiscount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newAmountDiscount: NewAmountDiscount) = apply { - this.appliesToPriceIds = newAmountDiscount.appliesToPriceIds - this.isInvoiceLevel = newAmountDiscount.isInvoiceLevel - this.adjustmentType = newAmountDiscount.adjustmentType - this.amountDiscount = newAmountDiscount.amountDiscount - additionalProperties(newAmountDiscount.additionalProperties) + appliesToPriceIds = newAmountDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newAmountDiscount.isInvoiceLevel + adjustmentType = newAmountDiscount.adjustmentType + amountDiscount = newAmountDiscount.amountDiscount + additionalProperties = newAmountDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2102,45 +1962,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun amountDiscount(amountDiscount: String) = - amountDiscount(JsonField.of(amountDiscount)) - - @JsonProperty("amount_discount") - @ExcludeMissing - fun amountDiscount(amountDiscount: JsonField) = apply { + fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2148,12 +1988,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewAmountDiscount = NewAmountDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - amountDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(amountDiscount) { + "`amountDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -2228,75 +2083,42 @@ constructor( "NewAmountDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMinimum.Builder::class) @NoAutoDetect class NewMinimum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("item_id") private val itemId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(): String = itemId.getRequired("item_id") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("minimum_amount") @ExcludeMissing fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMinimum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - minimumAmount() - itemId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2306,31 +2128,25 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var minimumAmount: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var minimumAmount: String? = null + private var itemId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMinimum: NewMinimum) = apply { - this.appliesToPriceIds = newMinimum.appliesToPriceIds - this.isInvoiceLevel = newMinimum.isInvoiceLevel - this.adjustmentType = newMinimum.adjustmentType - this.minimumAmount = newMinimum.minimumAmount - this.itemId = newMinimum.itemId - additionalProperties(newMinimum.additionalProperties) + appliesToPriceIds = newMinimum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMinimum.isInvoiceLevel + adjustmentType = newMinimum.adjustmentType + minimumAmount = newMinimum.minimumAmount + itemId = newMinimum.itemId + additionalProperties = newMinimum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2338,53 +2154,28 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2392,13 +2183,28 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMinimum = NewMinimum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - minimumAmount, - itemId, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, + checkNotNull(itemId) { "`itemId` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -2473,67 +2279,38 @@ constructor( "NewMinimum{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMaximum.Builder::class) @NoAutoDetect class NewMaximum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("maximum_amount") private val maximumAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("maximum_amount") @ExcludeMissing fun _maximumAmount() = maximumAmount + @JsonProperty("maximum_amount") fun maximumAmount(): String = maximumAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMaximum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - maximumAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -2543,29 +2320,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var maximumAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMaximum: NewMaximum) = apply { - this.appliesToPriceIds = newMaximum.appliesToPriceIds - this.isInvoiceLevel = newMaximum.isInvoiceLevel - this.adjustmentType = newMaximum.adjustmentType - this.maximumAmount = newMaximum.maximumAmount - additionalProperties(newMaximum.additionalProperties) + appliesToPriceIds = newMaximum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMaximum.isInvoiceLevel + adjustmentType = newMaximum.adjustmentType + maximumAmount = newMaximum.maximumAmount + additionalProperties = newMaximum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2573,45 +2344,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2619,12 +2370,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMaximum = NewMaximum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - maximumAmount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(maximumAmount) { + "`maximumAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -2718,62 +2484,70 @@ constructor( "AddAdjustment{adjustment=$adjustment, startDate=$startDate, endDate=$endDate, planPhaseOrder=$planPhaseOrder, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = AddPrice.Builder::class) @NoAutoDetect class AddPrice + @JsonCreator private constructor( - private val priceId: String?, - private val externalPriceId: String?, - private val price: Price?, - private val startDate: OffsetDateTime?, - private val endDate: OffsetDateTime?, - private val planPhaseOrder: Long?, - private val minimumAmount: String?, - private val maximumAmount: String?, - private val discounts: List?, - private val additionalProperties: Map, + @JsonProperty("price_id") private val priceId: String?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("price") private val price: Price?, + @JsonProperty("start_date") private val startDate: OffsetDateTime?, + @JsonProperty("end_date") private val endDate: OffsetDateTime?, + @JsonProperty("plan_phase_order") private val planPhaseOrder: Long?, + @JsonProperty("minimum_amount") private val minimumAmount: String?, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("discounts") private val discounts: List?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(): String? = priceId + @JsonProperty("price_id") fun priceId(): Optional = Optional.ofNullable(priceId) /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(): Price? = price + @JsonProperty("price") fun price(): Optional = Optional.ofNullable(price) /** * The start date of the price interval. This is the date that the price will start billing * on the subscription. If null, billing will start when the phase or subscription starts. */ - @JsonProperty("start_date") fun startDate(): OffsetDateTime? = startDate + @JsonProperty("start_date") + fun startDate(): Optional = Optional.ofNullable(startDate) /** * The end date of the price interval. This is the date that the price will stop billing on * the subscription. If null, billing will end when the phase or subscription ends. */ - @JsonProperty("end_date") fun endDate(): OffsetDateTime? = endDate + @JsonProperty("end_date") + fun endDate(): Optional = Optional.ofNullable(endDate) /** The phase to add this price to. */ - @JsonProperty("plan_phase_order") fun planPhaseOrder(): Long? = planPhaseOrder + @JsonProperty("plan_phase_order") + fun planPhaseOrder(): Optional = Optional.ofNullable(planPhaseOrder) /** * [DEPRECATED] Use add_adjustments instead. The subscription's minimum amount for this * price. */ - @JsonProperty("minimum_amount") fun minimumAmount(): String? = minimumAmount + @JsonProperty("minimum_amount") + fun minimumAmount(): Optional = Optional.ofNullable(minimumAmount) /** * [DEPRECATED] Use add_adjustments instead. The subscription's maximum amount for this * price. */ - @JsonProperty("maximum_amount") fun maximumAmount(): String? = maximumAmount + @JsonProperty("maximum_amount") + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** * [DEPRECATED] Use add_adjustments instead. The subscription's discounts for this price. */ - @JsonProperty("discounts") fun discounts(): List? = discounts + @JsonProperty("discounts") + fun discounts(): Optional> = Optional.ofNullable(discounts) @JsonAnyGetter @ExcludeMissing @@ -2801,48 +2575,43 @@ constructor( @JvmSynthetic internal fun from(addPrice: AddPrice) = apply { - this.priceId = addPrice.priceId - this.externalPriceId = addPrice.externalPriceId - this.price = addPrice.price - this.startDate = addPrice.startDate - this.endDate = addPrice.endDate - this.planPhaseOrder = addPrice.planPhaseOrder - this.minimumAmount = addPrice.minimumAmount - this.maximumAmount = addPrice.maximumAmount - this.discounts = addPrice.discounts - additionalProperties(addPrice.additionalProperties) + priceId = addPrice.priceId + externalPriceId = addPrice.externalPriceId + price = addPrice.price + startDate = addPrice.startDate + endDate = addPrice.endDate + planPhaseOrder = addPrice.planPhaseOrder + minimumAmount = addPrice.minimumAmount + maximumAmount = addPrice.maximumAmount + discounts = addPrice.discounts?.toMutableList() + additionalProperties = addPrice.additionalProperties.toMutableMap() } /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(priceId: String) = apply { this.priceId = priceId } /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(price: Price) = apply { this.price = price } + fun price(price: Price) = apply { this.price = price } /** * The start date of the price interval. This is the date that the price will start * billing on the subscription. If null, billing will start when the phase or * subscription starts. */ - @JsonProperty("start_date") fun startDate(startDate: OffsetDateTime) = apply { this.startDate = startDate } /** * The end date of the price interval. This is the date that the price will stop billing * on the subscription. If null, billing will end when the phase or subscription ends. */ - @JsonProperty("end_date") fun endDate(endDate: OffsetDateTime) = apply { this.endDate = endDate } /** The phase to add this price to. */ - @JsonProperty("plan_phase_order") fun planPhaseOrder(planPhaseOrder: Long) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2851,37 +2620,39 @@ constructor( * [DEPRECATED] Use add_adjustments instead. The subscription's minimum amount for this * price. */ - @JsonProperty("minimum_amount") fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** * [DEPRECATED] Use add_adjustments instead. The subscription's maximum amount for this * price. */ - @JsonProperty("maximum_amount") fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** * [DEPRECATED] Use add_adjustments instead. The subscription's discounts for this * price. */ - @JsonProperty("discounts") fun discounts(discounts: List) = apply { this.discounts = discounts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AddPrice = AddPrice( priceId, @@ -2897,33 +2668,36 @@ constructor( ) } - @JsonDeserialize(builder = Discount.Builder::class) @NoAutoDetect class Discount + @JsonCreator private constructor( - private val discountType: DiscountType?, - private val percentageDiscount: Double?, - private val usageDiscount: Double?, - private val amountDiscount: String?, - private val additionalProperties: Map, + @JsonProperty("discount_type") private val discountType: DiscountType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double?, + @JsonProperty("usage_discount") private val usageDiscount: Double?, + @JsonProperty("amount_discount") private val amountDiscount: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("discount_type") fun discountType(): DiscountType? = discountType + @JsonProperty("discount_type") fun discountType(): DiscountType = discountType /** * Only available if discount_type is `percentage`. This is a number between 0 and 1. */ @JsonProperty("percentage_discount") - fun percentageDiscount(): Double? = percentageDiscount + fun percentageDiscount(): Optional = Optional.ofNullable(percentageDiscount) /** * Only available if discount_type is `usage`. Number of usage units that this discount * is for */ - @JsonProperty("usage_discount") fun usageDiscount(): Double? = usageDiscount + @JsonProperty("usage_discount") + fun usageDiscount(): Optional = Optional.ofNullable(usageDiscount) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") fun amountDiscount(): String? = amountDiscount + @JsonProperty("amount_discount") + fun amountDiscount(): Optional = Optional.ofNullable(amountDiscount) @JsonAnyGetter @ExcludeMissing @@ -2946,14 +2720,13 @@ constructor( @JvmSynthetic internal fun from(discount: Discount) = apply { - this.discountType = discount.discountType - this.percentageDiscount = discount.percentageDiscount - this.usageDiscount = discount.usageDiscount - this.amountDiscount = discount.amountDiscount - additionalProperties(discount.additionalProperties) + discountType = discount.discountType + percentageDiscount = discount.percentageDiscount + usageDiscount = discount.usageDiscount + amountDiscount = discount.amountDiscount + additionalProperties = discount.additionalProperties.toMutableMap() } - @JsonProperty("discount_type") fun discountType(discountType: DiscountType) = apply { this.discountType = discountType } @@ -2962,7 +2735,6 @@ constructor( * Only available if discount_type is `percentage`. This is a number between 0 * and 1. */ - @JsonProperty("percentage_discount") fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } @@ -2971,25 +2743,22 @@ constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2997,6 +2766,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Discount = Discount( checkNotNull(discountType) { "`discountType` is required but was not set" }, @@ -3131,8 +2908,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newSubscriptionUnitPrice(): Optional = Optional.ofNullable(newSubscriptionUnitPrice) @@ -3381,52 +3156,6 @@ constructor( } } - fun validate(): Price = apply { - if (!validated) { - if ( - newSubscriptionUnitPrice == null && - newSubscriptionPackagePrice == null && - newSubscriptionMatrixPrice == null && - newSubscriptionTieredPrice == null && - newSubscriptionTieredBpsPrice == null && - newSubscriptionBpsPrice == null && - newSubscriptionBulkBpsPrice == null && - newSubscriptionBulkPrice == null && - newSubscriptionThresholdTotalAmountPrice == null && - newSubscriptionTieredPackagePrice == null && - newSubscriptionTieredWithMinimumPrice == null && - newSubscriptionUnitWithPercentPrice == null && - newSubscriptionPackageWithAllocationPrice == null && - newSubscriptionTierWithProrationPrice == null && - newSubscriptionUnitWithProrationPrice == null && - newSubscriptionGroupedAllocationPrice == null && - newSubscriptionGroupedWithProratedMinimumPrice == null && - newSubscriptionBulkWithProrationPrice == null - ) { - throw OrbInvalidDataException("Unknown Price: $_json") - } - newSubscriptionUnitPrice?.validate() - newSubscriptionPackagePrice?.validate() - newSubscriptionMatrixPrice?.validate() - newSubscriptionTieredPrice?.validate() - newSubscriptionTieredBpsPrice?.validate() - newSubscriptionBpsPrice?.validate() - newSubscriptionBulkBpsPrice?.validate() - newSubscriptionBulkPrice?.validate() - newSubscriptionThresholdTotalAmountPrice?.validate() - newSubscriptionTieredPackagePrice?.validate() - newSubscriptionTieredWithMinimumPrice?.validate() - newSubscriptionUnitWithPercentPrice?.validate() - newSubscriptionPackageWithAllocationPrice?.validate() - newSubscriptionTierWithProrationPrice?.validate() - newSubscriptionUnitWithProrationPrice?.validate() - newSubscriptionGroupedAllocationPrice?.validate() - newSubscriptionGroupedWithProratedMinimumPrice?.validate() - newSubscriptionBulkWithProrationPrice?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -3695,76 +3424,55 @@ constructor( when (modelType) { "unit" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionUnitPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionUnitPrice = it, _json = json) + } } "package" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionPackagePrice = it, _json = json) } } "matrix" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionMatrixPrice = it, _json = json) } } "tiered" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionTieredPrice = it, _json = json) } } "tiered_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionTieredBpsPrice = it, _json = json) } } "bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionBpsPrice = it, _json = json) + } } "bulk_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionBulkBpsPrice = it, _json = json) } } "bulk" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionBulkPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionBulkPrice = it, _json = json) + } } "threshold_total_amount" -> { tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionThresholdTotalAmountPrice = it, @@ -3776,9 +3484,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTieredPackagePrice = it, @@ -3790,9 +3496,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTieredWithMinimumPrice = it, @@ -3804,9 +3508,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionUnitWithPercentPrice = it, @@ -3818,9 +3520,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionPackageWithAllocationPrice = it, @@ -3832,9 +3532,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTierWithProrationPrice = it, @@ -3846,9 +3544,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionUnitWithProrationPrice = it, @@ -3860,9 +3556,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionGroupedAllocationPrice = it, @@ -3874,9 +3568,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionGroupedWithProratedMinimumPrice = it, @@ -3888,9 +3580,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionBulkWithProrationPrice = it, @@ -3956,230 +3646,120 @@ constructor( } } - @JsonDeserialize(builder = NewSubscriptionUnitPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_config") private val unitConfig: UnitConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitConfig(): UnitConfig = unitConfig.getRequired("unit_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("unit_config") @ExcludeMissing fun _unitConfig() = unitConfig + @JsonProperty("unit_config") fun unitConfig(): UnitConfig = unitConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4189,48 +3769,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitConfig: UnitConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionUnitPrice: NewSubscriptionUnitPrice) = apply { - this.metadata = newSubscriptionUnitPrice.metadata - this.externalPriceId = newSubscriptionUnitPrice.externalPriceId - this.name = newSubscriptionUnitPrice.name - this.billableMetricId = newSubscriptionUnitPrice.billableMetricId - this.itemId = newSubscriptionUnitPrice.itemId - this.billedInAdvance = newSubscriptionUnitPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionUnitPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionUnitPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionUnitPrice.metadata + externalPriceId = newSubscriptionUnitPrice.externalPriceId + name = newSubscriptionUnitPrice.name + billableMetricId = newSubscriptionUnitPrice.billableMetricId + itemId = newSubscriptionUnitPrice.itemId + billedInAdvance = newSubscriptionUnitPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionUnitPrice.invoiceGroupingKey + cadence = newSubscriptionUnitPrice.cadence + billingCycleConfiguration = newSubscriptionUnitPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitPrice.conversionRate - this.modelType = newSubscriptionUnitPrice.modelType - this.unitConfig = newSubscriptionUnitPrice.unitConfig - this.currency = newSubscriptionUnitPrice.currency - this.referenceId = newSubscriptionUnitPrice.referenceId - additionalProperties(newSubscriptionUnitPrice.additionalProperties) + conversionRate = newSubscriptionUnitPrice.conversionRate + modelType = newSubscriptionUnitPrice.modelType + unitConfig = newSubscriptionUnitPrice.unitConfig + currency = newSubscriptionUnitPrice.currency + referenceId = newSubscriptionUnitPrice.referenceId + additionalProperties = + newSubscriptionUnitPrice.additionalProperties.toMutableMap() } /** @@ -4238,75 +3816,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -4314,37 +3849,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -4352,16 +3867,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -4370,87 +3875,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun unitConfig(unitConfig: UnitConfig) = unitConfig(JsonField.of(unitConfig)) - - @JsonProperty("unit_config") - @ExcludeMissing - fun unitConfig(unitConfig: JsonField) = apply { - this.unitConfig = unitConfig - } + fun unitConfig(unitConfig: UnitConfig) = apply { this.unitConfig = unitConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -4458,22 +3914,30 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitPrice = NewSubscriptionUnitPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitConfig) { "`unitConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), @@ -4614,33 +4078,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitConfig.Builder::class) @NoAutoDetect class UnitConfig + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Rate per unit of usage */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Rate per unit of usage */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitConfig = apply { - if (!validated) { - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4650,43 +4103,48 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(unitConfig: UnitConfig) = apply { - this.unitAmount = unitConfig.unitAmount - additionalProperties(unitConfig.additionalProperties) + unitAmount = unitConfig.unitAmount + additionalProperties = unitConfig.additionalProperties.toMutableMap() } /** Rate per unit of usage */ - fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - - /** Rate per unit of usage */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { - this.unitAmount = unitAmount - } + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitConfig = - UnitConfig(unitAmount, additionalProperties.toImmutable()) + UnitConfig( + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + additionalProperties.toImmutable() + ) } override fun equals(other: Any?): Boolean { @@ -4711,43 +4169,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4757,57 +4198,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -4893,43 +4333,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -4939,8 +4362,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -4948,49 +4371,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -5077,25 +4499,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5110,24 +4525,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -5166,230 +4588,120 @@ constructor( "NewSubscriptionUnitPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitConfig=$unitConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionPackagePrice.Builder::class) @NoAutoDetect class NewSubscriptionPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_config") private val packageConfig: PackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageConfig(): PackageConfig = packageConfig.getRequired("package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("package_config") @ExcludeMissing fun _packageConfig() = packageConfig + @JsonProperty("package_config") fun packageConfig(): PackageConfig = packageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5399,49 +4711,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageConfig: PackageConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionPackagePrice: NewSubscriptionPackagePrice) = apply { - this.metadata = newSubscriptionPackagePrice.metadata - this.externalPriceId = newSubscriptionPackagePrice.externalPriceId - this.name = newSubscriptionPackagePrice.name - this.billableMetricId = newSubscriptionPackagePrice.billableMetricId - this.itemId = newSubscriptionPackagePrice.itemId - this.billedInAdvance = newSubscriptionPackagePrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionPackagePrice.invoiceGroupingKey - this.cadence = newSubscriptionPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionPackagePrice.metadata + externalPriceId = newSubscriptionPackagePrice.externalPriceId + name = newSubscriptionPackagePrice.name + billableMetricId = newSubscriptionPackagePrice.billableMetricId + itemId = newSubscriptionPackagePrice.itemId + billedInAdvance = newSubscriptionPackagePrice.billedInAdvance + fixedPriceQuantity = newSubscriptionPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionPackagePrice.invoiceGroupingKey + cadence = newSubscriptionPackagePrice.cadence + billingCycleConfiguration = newSubscriptionPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionPackagePrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionPackagePrice.conversionRate - this.modelType = newSubscriptionPackagePrice.modelType - this.packageConfig = newSubscriptionPackagePrice.packageConfig - this.currency = newSubscriptionPackagePrice.currency - this.referenceId = newSubscriptionPackagePrice.referenceId - additionalProperties(newSubscriptionPackagePrice.additionalProperties) + conversionRate = newSubscriptionPackagePrice.conversionRate + modelType = newSubscriptionPackagePrice.modelType + packageConfig = newSubscriptionPackagePrice.packageConfig + currency = newSubscriptionPackagePrice.currency + referenceId = newSubscriptionPackagePrice.referenceId + additionalProperties = + newSubscriptionPackagePrice.additionalProperties.toMutableMap() } /** @@ -5449,75 +4759,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -5525,37 +4792,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -5563,16 +4810,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -5581,47 +4818,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - fun packageConfig(packageConfig: PackageConfig) = - packageConfig(JsonField.of(packageConfig)) - - @JsonProperty("package_config") - @ExcludeMissing - fun packageConfig(packageConfig: JsonField) = apply { + fun packageConfig(packageConfig: PackageConfig) = apply { this.packageConfig = packageConfig } @@ -5629,40 +4837,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5670,22 +4859,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionPackagePrice = NewSubscriptionPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageConfig) { + "`packageConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -5826,49 +5025,29 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageConfig.Builder::class) @NoAutoDetect class PackageConfig + @JsonCreator private constructor( - private val packageAmount: JsonField, - private val packageSize: JsonField, - private val additionalProperties: Map, + @JsonProperty("package_amount") private val packageAmount: String, + @JsonProperty("package_size") private val packageSize: Long, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** A currency amount to rate usage by */ - fun packageAmount(): String = packageAmount.getRequired("package_amount") + @JsonProperty("package_amount") fun packageAmount(): String = packageAmount /** * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - fun packageSize(): Long = packageSize.getRequired("package_size") - - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun _packageAmount() = packageAmount - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - @JsonProperty("package_size") @ExcludeMissing fun _packageSize() = packageSize + @JsonProperty("package_size") fun packageSize(): Long = packageSize @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageConfig = apply { - if (!validated) { - packageAmount() - packageSize() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -5878,26 +5057,20 @@ constructor( class Builder { - private var packageAmount: JsonField = JsonMissing.of() - private var packageSize: JsonField = JsonMissing.of() + private var packageAmount: String? = null + private var packageSize: Long? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(packageConfig: PackageConfig) = apply { - this.packageAmount = packageConfig.packageAmount - this.packageSize = packageConfig.packageSize - additionalProperties(packageConfig.additionalProperties) + packageAmount = packageConfig.packageAmount + packageSize = packageConfig.packageSize + additionalProperties = packageConfig.additionalProperties.toMutableMap() } /** A currency amount to rate usage by */ - fun packageAmount(packageAmount: String) = - packageAmount(JsonField.of(packageAmount)) - - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun packageAmount(packageAmount: JsonField) = apply { + fun packageAmount(packageAmount: String) = apply { this.packageAmount = packageAmount } @@ -5905,37 +5078,40 @@ constructor( * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - fun packageSize(packageSize: Long) = packageSize(JsonField.of(packageSize)) - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - @JsonProperty("package_size") - @ExcludeMissing - fun packageSize(packageSize: JsonField) = apply { + fun packageSize(packageSize: Long) = apply { this.packageSize = packageSize } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageConfig = PackageConfig( - packageAmount, - packageSize, + checkNotNull(packageAmount) { + "`packageAmount` is required but was not set" + }, + checkNotNull(packageSize) { + "`packageSize` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -5962,43 +5138,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6008,57 +5167,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -6144,43 +5302,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6190,8 +5331,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -6199,49 +5340,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -6328,25 +5468,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6361,24 +5494,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -6417,230 +5557,120 @@ constructor( "NewSubscriptionPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageConfig=$packageConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionMatrixPrice.Builder::class) @NoAutoDetect class NewSubscriptionMatrixPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val matrixConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_config") private val matrixConfig: MatrixConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun matrixConfig(): MatrixConfig = matrixConfig.getRequired("matrix_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("matrix_config") @ExcludeMissing fun _matrixConfig() = matrixConfig + @JsonProperty("matrix_config") fun matrixConfig(): MatrixConfig = matrixConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionMatrixPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - matrixConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -6650,49 +5680,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var matrixConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var matrixConfig: MatrixConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionMatrixPrice: NewSubscriptionMatrixPrice) = apply { - this.metadata = newSubscriptionMatrixPrice.metadata - this.externalPriceId = newSubscriptionMatrixPrice.externalPriceId - this.name = newSubscriptionMatrixPrice.name - this.billableMetricId = newSubscriptionMatrixPrice.billableMetricId - this.itemId = newSubscriptionMatrixPrice.itemId - this.billedInAdvance = newSubscriptionMatrixPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionMatrixPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionMatrixPrice.invoiceGroupingKey - this.cadence = newSubscriptionMatrixPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionMatrixPrice.metadata + externalPriceId = newSubscriptionMatrixPrice.externalPriceId + name = newSubscriptionMatrixPrice.name + billableMetricId = newSubscriptionMatrixPrice.billableMetricId + itemId = newSubscriptionMatrixPrice.itemId + billedInAdvance = newSubscriptionMatrixPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionMatrixPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionMatrixPrice.invoiceGroupingKey + cadence = newSubscriptionMatrixPrice.cadence + billingCycleConfiguration = newSubscriptionMatrixPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionMatrixPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionMatrixPrice.conversionRate - this.modelType = newSubscriptionMatrixPrice.modelType - this.matrixConfig = newSubscriptionMatrixPrice.matrixConfig - this.currency = newSubscriptionMatrixPrice.currency - this.referenceId = newSubscriptionMatrixPrice.referenceId - additionalProperties(newSubscriptionMatrixPrice.additionalProperties) + conversionRate = newSubscriptionMatrixPrice.conversionRate + modelType = newSubscriptionMatrixPrice.modelType + matrixConfig = newSubscriptionMatrixPrice.matrixConfig + currency = newSubscriptionMatrixPrice.currency + referenceId = newSubscriptionMatrixPrice.referenceId + additionalProperties = + newSubscriptionMatrixPrice.additionalProperties.toMutableMap() } /** @@ -6700,75 +5728,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -6776,37 +5761,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -6814,16 +5779,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -6832,47 +5787,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun matrixConfig(matrixConfig: MatrixConfig) = - matrixConfig(JsonField.of(matrixConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("matrix_config") - @ExcludeMissing - fun matrixConfig(matrixConfig: JsonField) = apply { + fun matrixConfig(matrixConfig: MatrixConfig) = apply { this.matrixConfig = matrixConfig } @@ -6880,40 +5806,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -6921,22 +5828,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionMatrixPrice = NewSubscriptionMatrixPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - matrixConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(matrixConfig) { + "`matrixConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -7025,61 +5942,35 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensions: JsonField>, - private val defaultUnitAmount: JsonField, - private val matrixValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("default_unit_amount") private val defaultUnitAmount: String, + @JsonProperty("matrix_values") private val matrixValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** One or two event property values to evaluate matrix groups by */ - fun dimensions(): List = dimensions.getRequired("dimensions") - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - fun defaultUnitAmount(): String = - defaultUnitAmount.getRequired("default_unit_amount") - - /** Matrix values for specified matrix grouping keys */ - fun matrixValues(): List = - matrixValues.getRequired("matrix_values") - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") @ExcludeMissing fun _dimensions() = dimensions + @JsonProperty("dimensions") fun dimensions(): List = dimensions /** * Default per unit rate for any usage not bucketed into a specified * matrix_value */ @JsonProperty("default_unit_amount") - @ExcludeMissing - fun _defaultUnitAmount() = defaultUnitAmount + fun defaultUnitAmount(): String = defaultUnitAmount /** Matrix values for specified matrix grouping keys */ @JsonProperty("matrix_values") - @ExcludeMissing - fun _matrixValues() = matrixValues + fun matrixValues(): List = matrixValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixConfig = apply { - if (!validated) { - dimensions() - defaultUnitAmount() - matrixValues().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7089,28 +5980,22 @@ constructor( class Builder { - private var dimensions: JsonField> = JsonMissing.of() - private var defaultUnitAmount: JsonField = JsonMissing.of() - private var matrixValues: JsonField> = JsonMissing.of() + private var dimensions: List? = null + private var defaultUnitAmount: String? = null + private var matrixValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensions = matrixConfig.dimensions - this.defaultUnitAmount = matrixConfig.defaultUnitAmount - this.matrixValues = matrixConfig.matrixValues - additionalProperties(matrixConfig.additionalProperties) + dimensions = matrixConfig.dimensions.toMutableList() + defaultUnitAmount = matrixConfig.defaultUnitAmount + matrixValues = matrixConfig.matrixValues.toMutableList() + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ - fun dimensions(dimensions: List) = - dimensions(JsonField.of(dimensions)) - - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") - @ExcludeMissing - fun dimensions(dimensions: JsonField>) = apply { + fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } @@ -7118,78 +6003,68 @@ constructor( * Default per unit rate for any usage not bucketed into a specified * matrix_value */ - fun defaultUnitAmount(defaultUnitAmount: String) = - defaultUnitAmount(JsonField.of(defaultUnitAmount)) - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - @JsonProperty("default_unit_amount") - @ExcludeMissing - fun defaultUnitAmount(defaultUnitAmount: JsonField) = apply { + fun defaultUnitAmount(defaultUnitAmount: String) = apply { this.defaultUnitAmount = defaultUnitAmount } /** Matrix values for specified matrix grouping keys */ - fun matrixValues(matrixValues: List) = - matrixValues(JsonField.of(matrixValues)) - - /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") - @ExcludeMissing - fun matrixValues(matrixValues: JsonField>) = apply { + fun matrixValues(matrixValues: List) = apply { this.matrixValues = matrixValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( - dimensions.map { it.toImmutable() }, - defaultUnitAmount, - matrixValues.map { it.toImmutable() }, + checkNotNull(dimensions) { + "`dimensions` is required but was not set" + } + .toImmutable(), + checkNotNull(defaultUnitAmount) { + "`defaultUnitAmount` is required but was not set" + }, + checkNotNull(matrixValues) { + "`matrixValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonProperty("dimension_values") + private val dimensionValues: List, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Unit price for the specified dimension_values */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - fun dimensionValues(): List = - dimensionValues.getRequired("dimension_values") - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount /** * One or two matrix keys to filter usage to this Matrix value by. For @@ -7197,21 +6072,12 @@ constructor( * cloud region and an instance tier. */ @JsonProperty("dimension_values") - @ExcludeMissing - fun _dimensionValues() = dimensionValues + fun dimensionValues(): List = dimensionValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixValue = apply { - if (!validated) { - unitAmount() - dimensionValues() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7221,26 +6087,21 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() - private var dimensionValues: JsonField> = JsonMissing.of() + private var unitAmount: String? = null + private var dimensionValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues.toMutableList() + additionalProperties = + matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } @@ -7249,39 +6110,41 @@ constructor( * example, ["region", "tier"] could be used to filter cloud usage by a * cloud region and an instance tier. */ - fun dimensionValues(dimensionValues: List) = - dimensionValues(JsonField.of(dimensionValues)) - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - @JsonProperty("dimension_values") - @ExcludeMissing - fun dimensionValues(dimensionValues: JsonField>) = apply { + fun dimensionValues(dimensionValues: List) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( - unitAmount, - dimensionValues.map { it.toImmutable() }, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + checkNotNull(dimensionValues) { + "`dimensionValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } @@ -7378,43 +6241,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7424,57 +6270,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -7560,43 +6405,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7606,8 +6434,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -7615,49 +6443,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -7744,25 +6571,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -7777,24 +6597,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -7833,230 +6660,120 @@ constructor( "NewSubscriptionMatrixPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixConfig=$matrixConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_config") private val tieredConfig: TieredConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredConfig(): TieredConfig = tieredConfig.getRequired("tiered_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("tiered_config") @ExcludeMissing fun _tieredConfig() = tieredConfig + @JsonProperty("tiered_config") fun tieredConfig(): TieredConfig = tieredConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8066,49 +6783,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredConfig: TieredConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionTieredPrice: NewSubscriptionTieredPrice) = apply { - this.metadata = newSubscriptionTieredPrice.metadata - this.externalPriceId = newSubscriptionTieredPrice.externalPriceId - this.name = newSubscriptionTieredPrice.name - this.billableMetricId = newSubscriptionTieredPrice.billableMetricId - this.itemId = newSubscriptionTieredPrice.itemId - this.billedInAdvance = newSubscriptionTieredPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionTieredPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionTieredPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredPrice.metadata + externalPriceId = newSubscriptionTieredPrice.externalPriceId + name = newSubscriptionTieredPrice.name + billableMetricId = newSubscriptionTieredPrice.billableMetricId + itemId = newSubscriptionTieredPrice.itemId + billedInAdvance = newSubscriptionTieredPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredPrice.invoiceGroupingKey + cadence = newSubscriptionTieredPrice.cadence + billingCycleConfiguration = newSubscriptionTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredPrice.conversionRate - this.modelType = newSubscriptionTieredPrice.modelType - this.tieredConfig = newSubscriptionTieredPrice.tieredConfig - this.currency = newSubscriptionTieredPrice.currency - this.referenceId = newSubscriptionTieredPrice.referenceId - additionalProperties(newSubscriptionTieredPrice.additionalProperties) + conversionRate = newSubscriptionTieredPrice.conversionRate + modelType = newSubscriptionTieredPrice.modelType + tieredConfig = newSubscriptionTieredPrice.tieredConfig + currency = newSubscriptionTieredPrice.currency + referenceId = newSubscriptionTieredPrice.referenceId + additionalProperties = + newSubscriptionTieredPrice.additionalProperties.toMutableMap() } /** @@ -8116,75 +6831,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -8192,37 +6864,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -8230,16 +6882,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -8248,47 +6890,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredConfig(tieredConfig: TieredConfig) = - tieredConfig(JsonField.of(tieredConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_config") - @ExcludeMissing - fun tieredConfig(tieredConfig: JsonField) = apply { + fun tieredConfig(tieredConfig: TieredConfig) = apply { this.tieredConfig = tieredConfig } @@ -8296,40 +6909,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -8337,22 +6931,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredPrice = NewSubscriptionTieredPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredConfig) { + "`tieredConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -8493,33 +7097,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredConfig.Builder::class) @NoAutoDetect class TieredConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(): List = tiers.getRequired("tiers") - /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8529,98 +7122,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredConfig: TieredConfig) = apply { - this.tiers = tieredConfig.tiers - additionalProperties(tieredConfig.additionalProperties) + tiers = tieredConfig.tiers.toMutableList() + additionalProperties = tieredConfig.additionalProperties.toMutableMap() } /** * Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for rating based on total usage quantities into the specified tier - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredConfig = TieredConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") private val firstUnit: Double, + @JsonProperty("last_unit") private val lastUnit: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Inclusive tier starting value */ - fun firstUnit(): Double = firstUnit.getRequired("first_unit") - - /** - * Exclusive tier ending value. If null, this is treated as the last tier - */ - fun lastUnit(): Optional = - Optional.ofNullable(lastUnit.getNullable("last_unit")) - - /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Inclusive tier starting value */ - @JsonProperty("first_unit") @ExcludeMissing fun _firstUnit() = firstUnit + @JsonProperty("first_unit") fun firstUnit(): Double = firstUnit /** * Exclusive tier ending value. If null, this is treated as the last tier */ - @JsonProperty("last_unit") @ExcludeMissing fun _lastUnit() = lastUnit + @JsonProperty("last_unit") + fun lastUnit(): Optional = Optional.ofNullable(lastUnit) /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - firstUnit() - lastUnit() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8630,77 +7204,65 @@ constructor( class Builder { - private var firstUnit: JsonField = JsonMissing.of() - private var lastUnit: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var firstUnit: Double? = null + private var lastUnit: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.firstUnit = tier.firstUnit - this.lastUnit = tier.lastUnit - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + firstUnit = tier.firstUnit + lastUnit = tier.lastUnit + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) - - /** Inclusive tier starting value */ - @JsonProperty("first_unit") - @ExcludeMissing - fun firstUnit(firstUnit: JsonField) = apply { - this.firstUnit = firstUnit - } + fun firstUnit(firstUnit: Double) = apply { this.firstUnit = firstUnit } /** * Exclusive tier ending value. If null, this is treated as the last * tier */ - fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) - - /** - * Exclusive tier ending value. If null, this is treated as the last - * tier - */ - @JsonProperty("last_unit") - @ExcludeMissing - fun lastUnit(lastUnit: JsonField) = apply { - this.lastUnit = lastUnit - } + fun lastUnit(lastUnit: Double) = apply { this.lastUnit = lastUnit } /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - firstUnit, + checkNotNull(firstUnit) { + "`firstUnit` is required but was not set" + }, lastUnit, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -8745,43 +7307,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8791,57 +7336,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -8927,43 +7471,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -8973,8 +7500,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -8982,49 +7509,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -9111,25 +7637,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9144,24 +7663,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -9200,233 +7726,121 @@ constructor( "NewSubscriptionTieredPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredConfig=$tieredConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredBpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_bps_config") private val tieredBpsConfig: TieredBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredBpsConfig(): TieredBpsConfig = - tieredBpsConfig.getRequired("tiered_bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun _tieredBpsConfig() = tieredBpsConfig + fun tieredBpsConfig(): TieredBpsConfig = tieredBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredBpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9436,50 +7850,48 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredBpsConfig: TieredBpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredBpsPrice: NewSubscriptionTieredBpsPrice ) = apply { - this.metadata = newSubscriptionTieredBpsPrice.metadata - this.externalPriceId = newSubscriptionTieredBpsPrice.externalPriceId - this.name = newSubscriptionTieredBpsPrice.name - this.billableMetricId = newSubscriptionTieredBpsPrice.billableMetricId - this.itemId = newSubscriptionTieredBpsPrice.itemId - this.billedInAdvance = newSubscriptionTieredBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionTieredBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionTieredBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredBpsPrice.metadata + externalPriceId = newSubscriptionTieredBpsPrice.externalPriceId + name = newSubscriptionTieredBpsPrice.name + billableMetricId = newSubscriptionTieredBpsPrice.billableMetricId + itemId = newSubscriptionTieredBpsPrice.itemId + billedInAdvance = newSubscriptionTieredBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredBpsPrice.invoiceGroupingKey + cadence = newSubscriptionTieredBpsPrice.cadence + billingCycleConfiguration = newSubscriptionTieredBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredBpsPrice.conversionRate - this.modelType = newSubscriptionTieredBpsPrice.modelType - this.tieredBpsConfig = newSubscriptionTieredBpsPrice.tieredBpsConfig - this.currency = newSubscriptionTieredBpsPrice.currency - this.referenceId = newSubscriptionTieredBpsPrice.referenceId - additionalProperties(newSubscriptionTieredBpsPrice.additionalProperties) + conversionRate = newSubscriptionTieredBpsPrice.conversionRate + modelType = newSubscriptionTieredBpsPrice.modelType + tieredBpsConfig = newSubscriptionTieredBpsPrice.tieredBpsConfig + currency = newSubscriptionTieredBpsPrice.currency + referenceId = newSubscriptionTieredBpsPrice.referenceId + additionalProperties = + newSubscriptionTieredBpsPrice.additionalProperties.toMutableMap() } /** @@ -9487,75 +7899,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -9563,37 +7932,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -9601,16 +7950,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -9619,47 +7958,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = - tieredBpsConfig(JsonField.of(tieredBpsConfig)) - - @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun tieredBpsConfig(tieredBpsConfig: JsonField) = apply { + fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = apply { this.tieredBpsConfig = tieredBpsConfig } @@ -9667,40 +7977,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -9708,22 +7999,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredBpsPrice = NewSubscriptionTieredBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredBpsConfig) { + "`tieredBpsConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -9864,39 +8165,25 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredBpsConfig.Builder::class) @NoAutoDetect class TieredBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -9906,111 +8193,84 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredBpsConfig: TieredBpsConfig) = apply { - this.tiers = tieredBpsConfig.tiers - additionalProperties(tieredBpsConfig.additionalProperties) + tiers = tieredBpsConfig.tiers.toMutableList() + additionalProperties = + tieredBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredBpsConfig = TieredBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Inclusive tier starting value */ - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** Exclusive tier ending value */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Per-event basis point rate */ - fun bps(): Double = bps.getRequired("bps") - - /** Per unit maximum to charge */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** Exclusive tier ending value */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Per-event basis point rate */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Per unit maximum to charge */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - minimumAmount() - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10020,83 +8280,69 @@ constructor( class Builder { - private var minimumAmount: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var minimumAmount: String? = null + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.minimumAmount = tier.minimumAmount - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + minimumAmount = tier.minimumAmount + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** Exclusive tier ending value */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Exclusive tier ending value */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Per-event basis point rate */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Per-event basis point rate */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** Per unit maximum to charge */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** Per unit maximum to charge */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - minimumAmount, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -10142,43 +8388,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10188,57 +8417,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -10324,43 +8552,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10370,8 +8581,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -10379,49 +8590,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -10508,25 +8718,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10541,24 +8744,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -10597,230 +8807,120 @@ constructor( "NewSubscriptionTieredBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredBpsConfig=$tieredBpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bps_config") private val bpsConfig: BpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bpsConfig(): BpsConfig = bpsConfig.getRequired("bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bps_config") @ExcludeMissing fun _bpsConfig() = bpsConfig + @JsonProperty("bps_config") fun bpsConfig(): BpsConfig = bpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -10830,48 +8930,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bpsConfig: BpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBpsPrice: NewSubscriptionBpsPrice) = apply { - this.metadata = newSubscriptionBpsPrice.metadata - this.externalPriceId = newSubscriptionBpsPrice.externalPriceId - this.name = newSubscriptionBpsPrice.name - this.billableMetricId = newSubscriptionBpsPrice.billableMetricId - this.itemId = newSubscriptionBpsPrice.itemId - this.billedInAdvance = newSubscriptionBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBpsPrice.metadata + externalPriceId = newSubscriptionBpsPrice.externalPriceId + name = newSubscriptionBpsPrice.name + billableMetricId = newSubscriptionBpsPrice.billableMetricId + itemId = newSubscriptionBpsPrice.itemId + billedInAdvance = newSubscriptionBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBpsPrice.invoiceGroupingKey + cadence = newSubscriptionBpsPrice.cadence + billingCycleConfiguration = newSubscriptionBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBpsPrice.conversionRate - this.modelType = newSubscriptionBpsPrice.modelType - this.bpsConfig = newSubscriptionBpsPrice.bpsConfig - this.currency = newSubscriptionBpsPrice.currency - this.referenceId = newSubscriptionBpsPrice.referenceId - additionalProperties(newSubscriptionBpsPrice.additionalProperties) + conversionRate = newSubscriptionBpsPrice.conversionRate + modelType = newSubscriptionBpsPrice.modelType + bpsConfig = newSubscriptionBpsPrice.bpsConfig + currency = newSubscriptionBpsPrice.currency + referenceId = newSubscriptionBpsPrice.referenceId + additionalProperties = + newSubscriptionBpsPrice.additionalProperties.toMutableMap() } /** @@ -10879,75 +8977,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -10955,37 +9010,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -10993,16 +9028,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -11011,87 +9036,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bpsConfig(bpsConfig: BpsConfig) = bpsConfig(JsonField.of(bpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bps_config") - @ExcludeMissing - fun bpsConfig(bpsConfig: JsonField) = apply { - this.bpsConfig = bpsConfig - } + fun bpsConfig(bpsConfig: BpsConfig) = apply { this.bpsConfig = bpsConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -11099,66 +9075,57 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBpsPrice = NewSubscriptionBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bpsConfig) { "`bpsConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BpsConfig.Builder::class) @NoAutoDetect class BpsConfig + @JsonCreator private constructor( - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Basis point take rate per event */ - fun bps(): Double = bps.getRequired("bps") - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Basis point take rate per event */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Optional currency amount maximum to cap spend per event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BpsConfig = apply { - if (!validated) { - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11168,55 +9135,51 @@ constructor( class Builder { - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bpsConfig: BpsConfig) = apply { - this.bps = bpsConfig.bps - this.perUnitMaximum = bpsConfig.perUnitMaximum - additionalProperties(bpsConfig.additionalProperties) + bps = bpsConfig.bps + perUnitMaximum = bpsConfig.perUnitMaximum + additionalProperties = bpsConfig.additionalProperties.toMutableMap() } /** Basis point take rate per event */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis point take rate per event */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) - - /** Optional currency amount maximum to cap spend per event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BpsConfig = BpsConfig( - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -11378,43 +9341,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11424,57 +9370,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -11560,43 +9505,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11606,8 +9534,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -11615,49 +9543,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -11744,25 +9671,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -11777,24 +9697,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -11833,232 +9760,120 @@ constructor( "NewSubscriptionBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bpsConfig=$bpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkBpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_bps_config") private val bulkBpsConfig: BulkBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig.getRequired("bulk_bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun _bulkBpsConfig() = bulkBpsConfig + @JsonProperty("bulk_bps_config") fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkBpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12068,49 +9883,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkBpsConfig: BulkBpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBulkBpsPrice: NewSubscriptionBulkBpsPrice) = apply { - this.metadata = newSubscriptionBulkBpsPrice.metadata - this.externalPriceId = newSubscriptionBulkBpsPrice.externalPriceId - this.name = newSubscriptionBulkBpsPrice.name - this.billableMetricId = newSubscriptionBulkBpsPrice.billableMetricId - this.itemId = newSubscriptionBulkBpsPrice.itemId - this.billedInAdvance = newSubscriptionBulkBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBulkBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBulkBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBulkBpsPrice.metadata + externalPriceId = newSubscriptionBulkBpsPrice.externalPriceId + name = newSubscriptionBulkBpsPrice.name + billableMetricId = newSubscriptionBulkBpsPrice.billableMetricId + itemId = newSubscriptionBulkBpsPrice.itemId + billedInAdvance = newSubscriptionBulkBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBulkBpsPrice.invoiceGroupingKey + cadence = newSubscriptionBulkBpsPrice.cadence + billingCycleConfiguration = newSubscriptionBulkBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkBpsPrice.conversionRate - this.modelType = newSubscriptionBulkBpsPrice.modelType - this.bulkBpsConfig = newSubscriptionBulkBpsPrice.bulkBpsConfig - this.currency = newSubscriptionBulkBpsPrice.currency - this.referenceId = newSubscriptionBulkBpsPrice.referenceId - additionalProperties(newSubscriptionBulkBpsPrice.additionalProperties) + conversionRate = newSubscriptionBulkBpsPrice.conversionRate + modelType = newSubscriptionBulkBpsPrice.modelType + bulkBpsConfig = newSubscriptionBulkBpsPrice.bulkBpsConfig + currency = newSubscriptionBulkBpsPrice.currency + referenceId = newSubscriptionBulkBpsPrice.referenceId + additionalProperties = + newSubscriptionBulkBpsPrice.additionalProperties.toMutableMap() } /** @@ -12118,75 +9931,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -12194,37 +9964,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -12232,16 +9982,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -12250,47 +9990,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = - bulkBpsConfig(JsonField.of(bulkBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun bulkBpsConfig(bulkBpsConfig: JsonField) = apply { + fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = apply { this.bulkBpsConfig = bulkBpsConfig } @@ -12298,40 +10009,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -12339,61 +10031,57 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkBpsPrice = NewSubscriptionBulkBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkBpsConfig) { + "`bulkBpsConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkBpsConfig.Builder::class) @NoAutoDetect class BulkBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a single - * tier based on total volume - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single * tier based on total volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12403,101 +10091,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkBpsConfig: BulkBpsConfig) = apply { - this.tiers = bulkBpsConfig.tiers - additionalProperties(bulkBpsConfig.additionalProperties) + tiers = bulkBpsConfig.tiers.toMutableList() + additionalProperties = bulkBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a * single tier based on total volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a - * single tier based on total volume - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkBpsConfig = BulkBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for tier */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Basis points to rate on */ - fun bps(): Double = bps.getRequired("bps") - - /** The maximum amount to charge for any one event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Upper bound for tier */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Basis points to rate on */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** The maximum amount to charge for any one event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12507,69 +10173,59 @@ constructor( class Builder { - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for tier */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Upper bound for tier */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Basis points to rate on */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis points to rate on */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** The maximum amount to charge for any one event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** The maximum amount to charge for any one event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -12749,43 +10405,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12795,57 +10434,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -12931,43 +10569,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -12977,8 +10598,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -12986,49 +10607,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -13115,25 +10735,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13148,24 +10761,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -13204,230 +10824,120 @@ constructor( "NewSubscriptionBulkBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkBpsConfig=$bulkBpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_config") private val bulkConfig: BulkConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkConfig(): BulkConfig = bulkConfig.getRequired("bulk_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_config") @ExcludeMissing fun _bulkConfig() = bulkConfig + @JsonProperty("bulk_config") fun bulkConfig(): BulkConfig = bulkConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13437,48 +10947,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkConfig: BulkConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBulkPrice: NewSubscriptionBulkPrice) = apply { - this.metadata = newSubscriptionBulkPrice.metadata - this.externalPriceId = newSubscriptionBulkPrice.externalPriceId - this.name = newSubscriptionBulkPrice.name - this.billableMetricId = newSubscriptionBulkPrice.billableMetricId - this.itemId = newSubscriptionBulkPrice.itemId - this.billedInAdvance = newSubscriptionBulkPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBulkPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBulkPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBulkPrice.metadata + externalPriceId = newSubscriptionBulkPrice.externalPriceId + name = newSubscriptionBulkPrice.name + billableMetricId = newSubscriptionBulkPrice.billableMetricId + itemId = newSubscriptionBulkPrice.itemId + billedInAdvance = newSubscriptionBulkPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBulkPrice.invoiceGroupingKey + cadence = newSubscriptionBulkPrice.cadence + billingCycleConfiguration = newSubscriptionBulkPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkPrice.conversionRate - this.modelType = newSubscriptionBulkPrice.modelType - this.bulkConfig = newSubscriptionBulkPrice.bulkConfig - this.currency = newSubscriptionBulkPrice.currency - this.referenceId = newSubscriptionBulkPrice.referenceId - additionalProperties(newSubscriptionBulkPrice.additionalProperties) + conversionRate = newSubscriptionBulkPrice.conversionRate + modelType = newSubscriptionBulkPrice.modelType + bulkConfig = newSubscriptionBulkPrice.bulkConfig + currency = newSubscriptionBulkPrice.currency + referenceId = newSubscriptionBulkPrice.referenceId + additionalProperties = + newSubscriptionBulkPrice.additionalProperties.toMutableMap() } /** @@ -13486,75 +10994,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -13562,37 +11027,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -13600,16 +11045,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -13618,87 +11053,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkConfig(bulkConfig: BulkConfig) = bulkConfig(JsonField.of(bulkConfig)) - - @JsonProperty("bulk_config") - @ExcludeMissing - fun bulkConfig(bulkConfig: JsonField) = apply { - this.bulkConfig = bulkConfig - } + fun bulkConfig(bulkConfig: BulkConfig) = apply { this.bulkConfig = bulkConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -13706,55 +11092,52 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkPrice = NewSubscriptionBulkPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkConfig) { "`bulkConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkConfig.Builder::class) @NoAutoDetect class BulkConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Bulk tiers for rating based on total usage volume */ - fun tiers(): List = tiers.getRequired("tiers") - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13764,84 +11147,71 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkConfig: BulkConfig) = apply { - this.tiers = bulkConfig.tiers - additionalProperties(bulkConfig.additionalProperties) + tiers = bulkConfig.tiers.toMutableList() + additionalProperties = bulkConfig.additionalProperties.toMutableMap() } /** Bulk tiers for rating based on total usage volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkConfig = BulkConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumUnits: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_units") private val maximumUnits: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for this tier */ - fun maximumUnits(): Optional = - Optional.ofNullable(maximumUnits.getNullable("maximum_units")) - - /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Upper bound for this tier */ @JsonProperty("maximum_units") - @ExcludeMissing - fun _maximumUnits() = maximumUnits + fun maximumUnits(): Optional = Optional.ofNullable(maximumUnits) /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumUnits() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -13851,59 +11221,56 @@ constructor( class Builder { - private var maximumUnits: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var maximumUnits: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumUnits = tier.maximumUnits - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + maximumUnits = tier.maximumUnits + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for this tier */ - fun maximumUnits(maximumUnits: Double) = - maximumUnits(JsonField.of(maximumUnits)) - - /** Upper bound for this tier */ - @JsonProperty("maximum_units") - @ExcludeMissing - fun maximumUnits(maximumUnits: JsonField) = apply { + fun maximumUnits(maximumUnits: Double) = apply { this.maximumUnits = maximumUnits } /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumUnits, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14082,43 +11449,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14128,57 +11478,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14264,43 +11613,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14310,8 +11642,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -14319,49 +11651,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -14448,25 +11779,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14481,24 +11805,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -14537,233 +11868,123 @@ constructor( "NewSubscriptionBulkPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkConfig=$bulkConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionThresholdTotalAmountPrice.Builder::class) @NoAutoDetect class NewSubscriptionThresholdTotalAmountPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val thresholdTotalAmountConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("threshold_total_amount_config") + private val thresholdTotalAmountConfig: ThresholdTotalAmountConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = - thresholdTotalAmountConfig.getRequired("threshold_total_amount_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun _thresholdTotalAmountConfig() = thresholdTotalAmountConfig + fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = + thresholdTotalAmountConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionThresholdTotalAmountPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - thresholdTotalAmountConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -14773,26 +11994,22 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var thresholdTotalAmountConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var thresholdTotalAmountConfig: ThresholdTotalAmountConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -14800,34 +12017,30 @@ constructor( newSubscriptionThresholdTotalAmountPrice: NewSubscriptionThresholdTotalAmountPrice ) = apply { - this.metadata = newSubscriptionThresholdTotalAmountPrice.metadata - this.externalPriceId = - newSubscriptionThresholdTotalAmountPrice.externalPriceId - this.name = newSubscriptionThresholdTotalAmountPrice.name - this.billableMetricId = - newSubscriptionThresholdTotalAmountPrice.billableMetricId - this.itemId = newSubscriptionThresholdTotalAmountPrice.itemId - this.billedInAdvance = - newSubscriptionThresholdTotalAmountPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionThresholdTotalAmountPrice.metadata + externalPriceId = newSubscriptionThresholdTotalAmountPrice.externalPriceId + name = newSubscriptionThresholdTotalAmountPrice.name + billableMetricId = newSubscriptionThresholdTotalAmountPrice.billableMetricId + itemId = newSubscriptionThresholdTotalAmountPrice.itemId + billedInAdvance = newSubscriptionThresholdTotalAmountPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionThresholdTotalAmountPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionThresholdTotalAmountPrice.invoiceGroupingKey - this.cadence = newSubscriptionThresholdTotalAmountPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionThresholdTotalAmountPrice.cadence + billingCycleConfiguration = newSubscriptionThresholdTotalAmountPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionThresholdTotalAmountPrice.invoicingCycleConfiguration - this.conversionRate = - newSubscriptionThresholdTotalAmountPrice.conversionRate - this.modelType = newSubscriptionThresholdTotalAmountPrice.modelType - this.thresholdTotalAmountConfig = + conversionRate = newSubscriptionThresholdTotalAmountPrice.conversionRate + modelType = newSubscriptionThresholdTotalAmountPrice.modelType + thresholdTotalAmountConfig = newSubscriptionThresholdTotalAmountPrice.thresholdTotalAmountConfig - this.currency = newSubscriptionThresholdTotalAmountPrice.currency - this.referenceId = newSubscriptionThresholdTotalAmountPrice.referenceId - additionalProperties( + currency = newSubscriptionThresholdTotalAmountPrice.currency + referenceId = newSubscriptionThresholdTotalAmountPrice.referenceId + additionalProperties = newSubscriptionThresholdTotalAmountPrice.additionalProperties - ) + .toMutableMap() } /** @@ -14835,75 +12048,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -14911,37 +12081,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -14949,16 +12099,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -14967,89 +12107,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun thresholdTotalAmountConfig( thresholdTotalAmountConfig: ThresholdTotalAmountConfig - ) = thresholdTotalAmountConfig(JsonField.of(thresholdTotalAmountConfig)) - - @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun thresholdTotalAmountConfig( - thresholdTotalAmountConfig: JsonField ) = apply { this.thresholdTotalAmountConfig = thresholdTotalAmountConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -15057,22 +12148,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionThresholdTotalAmountPrice = NewSubscriptionThresholdTotalAmountPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - thresholdTotalAmountConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(thresholdTotalAmountConfig) { + "`thresholdTotalAmountConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -15213,25 +12314,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ThresholdTotalAmountConfig.Builder::class) @NoAutoDetect class ThresholdTotalAmountConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): ThresholdTotalAmountConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15247,26 +12341,32 @@ constructor( @JvmSynthetic internal fun from(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = apply { - additionalProperties( - thresholdTotalAmountConfig.additionalProperties - ) + additionalProperties = + thresholdTotalAmountConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ThresholdTotalAmountConfig = ThresholdTotalAmountConfig(additionalProperties.toImmutable()) } @@ -15293,43 +12393,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15339,57 +12422,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -15475,43 +12557,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15521,8 +12586,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -15530,49 +12595,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -15659,25 +12723,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15692,24 +12749,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -15748,233 +12812,122 @@ constructor( "NewSubscriptionThresholdTotalAmountPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, thresholdTotalAmountConfig=$thresholdTotalAmountConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredPackagePrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredPackageConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_package_config") + private val tieredPackageConfig: TieredPackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredPackageConfig(): TieredPackageConfig = - tieredPackageConfig.getRequired("tiered_package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_package_config") - @ExcludeMissing - fun _tieredPackageConfig() = tieredPackageConfig + fun tieredPackageConfig(): TieredPackageConfig = tieredPackageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredPackageConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -15984,54 +12937,48 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredPackageConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredPackageConfig: TieredPackageConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredPackagePrice: NewSubscriptionTieredPackagePrice ) = apply { - this.metadata = newSubscriptionTieredPackagePrice.metadata - this.externalPriceId = newSubscriptionTieredPackagePrice.externalPriceId - this.name = newSubscriptionTieredPackagePrice.name - this.billableMetricId = newSubscriptionTieredPackagePrice.billableMetricId - this.itemId = newSubscriptionTieredPackagePrice.itemId - this.billedInAdvance = newSubscriptionTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = - newSubscriptionTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = - newSubscriptionTieredPackagePrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredPackagePrice.metadata + externalPriceId = newSubscriptionTieredPackagePrice.externalPriceId + name = newSubscriptionTieredPackagePrice.name + billableMetricId = newSubscriptionTieredPackagePrice.billableMetricId + itemId = newSubscriptionTieredPackagePrice.itemId + billedInAdvance = newSubscriptionTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredPackagePrice.invoiceGroupingKey + cadence = newSubscriptionTieredPackagePrice.cadence + billingCycleConfiguration = newSubscriptionTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredPackagePrice.conversionRate - this.modelType = newSubscriptionTieredPackagePrice.modelType - this.tieredPackageConfig = - newSubscriptionTieredPackagePrice.tieredPackageConfig - this.currency = newSubscriptionTieredPackagePrice.currency - this.referenceId = newSubscriptionTieredPackagePrice.referenceId - additionalProperties(newSubscriptionTieredPackagePrice.additionalProperties) + conversionRate = newSubscriptionTieredPackagePrice.conversionRate + modelType = newSubscriptionTieredPackagePrice.modelType + tieredPackageConfig = newSubscriptionTieredPackagePrice.tieredPackageConfig + currency = newSubscriptionTieredPackagePrice.currency + referenceId = newSubscriptionTieredPackagePrice.referenceId + additionalProperties = + newSubscriptionTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -16039,75 +12986,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -16115,37 +13019,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -16153,16 +13037,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -16171,89 +13045,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType + fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = apply { + this.tieredPackageConfig = tieredPackageConfig } - fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = - tieredPackageConfig(JsonField.of(tieredPackageConfig)) - - @JsonProperty("tiered_package_config") - @ExcludeMissing - fun tieredPackageConfig(tieredPackageConfig: JsonField) = - apply { - this.tieredPackageConfig = tieredPackageConfig - } - /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -16261,22 +13086,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredPackagePrice = NewSubscriptionTieredPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredPackageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredPackageConfig) { + "`tieredPackageConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -16417,25 +13252,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageConfig.Builder::class) @NoAutoDetect class TieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredPackageConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16450,24 +13278,32 @@ constructor( @JvmSynthetic internal fun from(tieredPackageConfig: TieredPackageConfig) = apply { - additionalProperties(tieredPackageConfig.additionalProperties) + additionalProperties = + tieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageConfig = TieredPackageConfig(additionalProperties.toImmutable()) } @@ -16494,43 +13330,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16540,57 +13359,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -16676,43 +13494,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16722,8 +13523,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -16731,49 +13532,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -16860,25 +13660,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -16893,24 +13686,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -16949,233 +13749,122 @@ constructor( "NewSubscriptionTieredPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredPackageConfig=$tieredPackageConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredWithMinimumPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredWithMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithMinimumConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_minimum_config") + private val tieredWithMinimumConfig: TieredWithMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithMinimumConfig(): TieredWithMinimumConfig = - tieredWithMinimumConfig.getRequired("tiered_with_minimum_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun _tieredWithMinimumConfig() = tieredWithMinimumConfig + fun tieredWithMinimumConfig(): TieredWithMinimumConfig = tieredWithMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredWithMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithMinimumConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17185,57 +13874,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithMinimumConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithMinimumConfig: TieredWithMinimumConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredWithMinimumPrice: NewSubscriptionTieredWithMinimumPrice ) = apply { - this.metadata = newSubscriptionTieredWithMinimumPrice.metadata - this.externalPriceId = newSubscriptionTieredWithMinimumPrice.externalPriceId - this.name = newSubscriptionTieredWithMinimumPrice.name - this.billableMetricId = - newSubscriptionTieredWithMinimumPrice.billableMetricId - this.itemId = newSubscriptionTieredWithMinimumPrice.itemId - this.billedInAdvance = newSubscriptionTieredWithMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionTieredWithMinimumPrice.metadata + externalPriceId = newSubscriptionTieredWithMinimumPrice.externalPriceId + name = newSubscriptionTieredWithMinimumPrice.name + billableMetricId = newSubscriptionTieredWithMinimumPrice.billableMetricId + itemId = newSubscriptionTieredWithMinimumPrice.itemId + billedInAdvance = newSubscriptionTieredWithMinimumPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredWithMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionTieredWithMinimumPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredWithMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionTieredWithMinimumPrice.cadence + billingCycleConfiguration = newSubscriptionTieredWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredWithMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredWithMinimumPrice.conversionRate - this.modelType = newSubscriptionTieredWithMinimumPrice.modelType - this.tieredWithMinimumConfig = + conversionRate = newSubscriptionTieredWithMinimumPrice.conversionRate + modelType = newSubscriptionTieredWithMinimumPrice.modelType + tieredWithMinimumConfig = newSubscriptionTieredWithMinimumPrice.tieredWithMinimumConfig - this.currency = newSubscriptionTieredWithMinimumPrice.currency - this.referenceId = newSubscriptionTieredWithMinimumPrice.referenceId - additionalProperties( + currency = newSubscriptionTieredWithMinimumPrice.currency + referenceId = newSubscriptionTieredWithMinimumPrice.referenceId + additionalProperties = newSubscriptionTieredWithMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -17243,75 +13927,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -17319,37 +13960,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -17357,16 +13978,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -17375,88 +13986,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithMinimumConfig(tieredWithMinimumConfig: TieredWithMinimumConfig) = - tieredWithMinimumConfig(JsonField.of(tieredWithMinimumConfig)) - - @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun tieredWithMinimumConfig( - tieredWithMinimumConfig: JsonField - ) = apply { this.tieredWithMinimumConfig = tieredWithMinimumConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.tieredWithMinimumConfig = tieredWithMinimumConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -17464,22 +14028,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredWithMinimumPrice = NewSubscriptionTieredWithMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithMinimumConfig) { + "`tieredWithMinimumConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -17620,25 +14194,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithMinimumConfig.Builder::class) @NoAutoDetect class TieredWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17654,24 +14221,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithMinimumConfig: TieredWithMinimumConfig) = apply { - additionalProperties(tieredWithMinimumConfig.additionalProperties) + additionalProperties = + tieredWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithMinimumConfig = TieredWithMinimumConfig(additionalProperties.toImmutable()) } @@ -17698,43 +14273,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17744,57 +14302,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -17880,43 +14437,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -17926,8 +14466,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -17935,49 +14475,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -18064,25 +14603,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18097,24 +14629,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -18153,233 +14692,122 @@ constructor( "NewSubscriptionTieredWithMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithMinimumConfig=$tieredWithMinimumConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionUnitWithPercentPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitWithPercentPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithPercentConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_percent_config") + private val unitWithPercentConfig: UnitWithPercentConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithPercentConfig(): UnitWithPercentConfig = - unitWithPercentConfig.getRequired("unit_with_percent_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun _unitWithPercentConfig() = unitWithPercentConfig + fun unitWithPercentConfig(): UnitWithPercentConfig = unitWithPercentConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitWithPercentPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithPercentConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18389,56 +14817,49 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithPercentConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithPercentConfig: UnitWithPercentConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionUnitWithPercentPrice: NewSubscriptionUnitWithPercentPrice ) = apply { - this.metadata = newSubscriptionUnitWithPercentPrice.metadata - this.externalPriceId = newSubscriptionUnitWithPercentPrice.externalPriceId - this.name = newSubscriptionUnitWithPercentPrice.name - this.billableMetricId = newSubscriptionUnitWithPercentPrice.billableMetricId - this.itemId = newSubscriptionUnitWithPercentPrice.itemId - this.billedInAdvance = newSubscriptionUnitWithPercentPrice.billedInAdvance - this.fixedPriceQuantity = - newSubscriptionUnitWithPercentPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newSubscriptionUnitWithPercentPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitWithPercentPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionUnitWithPercentPrice.metadata + externalPriceId = newSubscriptionUnitWithPercentPrice.externalPriceId + name = newSubscriptionUnitWithPercentPrice.name + billableMetricId = newSubscriptionUnitWithPercentPrice.billableMetricId + itemId = newSubscriptionUnitWithPercentPrice.itemId + billedInAdvance = newSubscriptionUnitWithPercentPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitWithPercentPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionUnitWithPercentPrice.invoiceGroupingKey + cadence = newSubscriptionUnitWithPercentPrice.cadence + billingCycleConfiguration = newSubscriptionUnitWithPercentPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitWithPercentPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitWithPercentPrice.conversionRate - this.modelType = newSubscriptionUnitWithPercentPrice.modelType - this.unitWithPercentConfig = + conversionRate = newSubscriptionUnitWithPercentPrice.conversionRate + modelType = newSubscriptionUnitWithPercentPrice.modelType + unitWithPercentConfig = newSubscriptionUnitWithPercentPrice.unitWithPercentConfig - this.currency = newSubscriptionUnitWithPercentPrice.currency - this.referenceId = newSubscriptionUnitWithPercentPrice.referenceId - additionalProperties( - newSubscriptionUnitWithPercentPrice.additionalProperties - ) + currency = newSubscriptionUnitWithPercentPrice.currency + referenceId = newSubscriptionUnitWithPercentPrice.referenceId + additionalProperties = + newSubscriptionUnitWithPercentPrice.additionalProperties.toMutableMap() } /** @@ -18446,75 +14867,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -18522,37 +14900,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -18560,16 +14918,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -18578,88 +14926,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithPercentConfig(unitWithPercentConfig: UnitWithPercentConfig) = - unitWithPercentConfig(JsonField.of(unitWithPercentConfig)) - - @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun unitWithPercentConfig( - unitWithPercentConfig: JsonField - ) = apply { this.unitWithPercentConfig = unitWithPercentConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithPercentConfig = unitWithPercentConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -18667,22 +14968,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitWithPercentPrice = NewSubscriptionUnitWithPercentPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithPercentConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithPercentConfig) { + "`unitWithPercentConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -18823,25 +15134,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithPercentConfig.Builder::class) @NoAutoDetect class UnitWithPercentConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithPercentConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18856,24 +15160,32 @@ constructor( @JvmSynthetic internal fun from(unitWithPercentConfig: UnitWithPercentConfig) = apply { - additionalProperties(unitWithPercentConfig.additionalProperties) + additionalProperties = + unitWithPercentConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithPercentConfig = UnitWithPercentConfig(additionalProperties.toImmutable()) } @@ -18900,43 +15212,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -18946,57 +15241,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -19082,43 +15376,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19128,8 +15405,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -19137,49 +15414,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -19266,25 +15542,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19299,24 +15568,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -19355,233 +15631,123 @@ constructor( "NewSubscriptionUnitWithPercentPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithPercentConfig=$unitWithPercentConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionPackageWithAllocationPrice.Builder::class) @NoAutoDetect class NewSubscriptionPackageWithAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageWithAllocationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_with_allocation_config") + private val packageWithAllocationConfig: PackageWithAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageWithAllocationConfig(): PackageWithAllocationConfig = - packageWithAllocationConfig.getRequired("package_with_allocation_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun _packageWithAllocationConfig() = packageWithAllocationConfig + fun packageWithAllocationConfig(): PackageWithAllocationConfig = + packageWithAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionPackageWithAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageWithAllocationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -19591,27 +15757,22 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageWithAllocationConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageWithAllocationConfig: PackageWithAllocationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -19619,34 +15780,31 @@ constructor( newSubscriptionPackageWithAllocationPrice: NewSubscriptionPackageWithAllocationPrice ) = apply { - this.metadata = newSubscriptionPackageWithAllocationPrice.metadata - this.externalPriceId = - newSubscriptionPackageWithAllocationPrice.externalPriceId - this.name = newSubscriptionPackageWithAllocationPrice.name - this.billableMetricId = + metadata = newSubscriptionPackageWithAllocationPrice.metadata + externalPriceId = newSubscriptionPackageWithAllocationPrice.externalPriceId + name = newSubscriptionPackageWithAllocationPrice.name + billableMetricId = newSubscriptionPackageWithAllocationPrice.billableMetricId - this.itemId = newSubscriptionPackageWithAllocationPrice.itemId - this.billedInAdvance = - newSubscriptionPackageWithAllocationPrice.billedInAdvance - this.fixedPriceQuantity = + itemId = newSubscriptionPackageWithAllocationPrice.itemId + billedInAdvance = newSubscriptionPackageWithAllocationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionPackageWithAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionPackageWithAllocationPrice.invoiceGroupingKey - this.cadence = newSubscriptionPackageWithAllocationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionPackageWithAllocationPrice.cadence + billingCycleConfiguration = newSubscriptionPackageWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionPackageWithAllocationPrice.invoicingCycleConfiguration - this.conversionRate = - newSubscriptionPackageWithAllocationPrice.conversionRate - this.modelType = newSubscriptionPackageWithAllocationPrice.modelType - this.packageWithAllocationConfig = + conversionRate = newSubscriptionPackageWithAllocationPrice.conversionRate + modelType = newSubscriptionPackageWithAllocationPrice.modelType + packageWithAllocationConfig = newSubscriptionPackageWithAllocationPrice.packageWithAllocationConfig - this.currency = newSubscriptionPackageWithAllocationPrice.currency - this.referenceId = newSubscriptionPackageWithAllocationPrice.referenceId - additionalProperties( + currency = newSubscriptionPackageWithAllocationPrice.currency + referenceId = newSubscriptionPackageWithAllocationPrice.referenceId + additionalProperties = newSubscriptionPackageWithAllocationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -19654,75 +15812,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -19730,37 +15845,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -19768,16 +15863,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -19786,89 +15871,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun packageWithAllocationConfig( packageWithAllocationConfig: PackageWithAllocationConfig - ) = packageWithAllocationConfig(JsonField.of(packageWithAllocationConfig)) - - @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun packageWithAllocationConfig( - packageWithAllocationConfig: JsonField ) = apply { this.packageWithAllocationConfig = packageWithAllocationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -19876,22 +15912,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionPackageWithAllocationPrice = NewSubscriptionPackageWithAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageWithAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageWithAllocationConfig) { + "`packageWithAllocationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -20032,25 +16078,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageWithAllocationConfig.Builder::class) @NoAutoDetect class PackageWithAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageWithAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20067,24 +16106,32 @@ constructor( internal fun from( packageWithAllocationConfig: PackageWithAllocationConfig ) = apply { - additionalProperties(packageWithAllocationConfig.additionalProperties) + additionalProperties = + packageWithAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageWithAllocationConfig = PackageWithAllocationConfig(additionalProperties.toImmutable()) } @@ -20111,43 +16158,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20157,57 +16187,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -20293,43 +16322,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20339,8 +16351,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -20348,49 +16360,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -20477,25 +16488,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20510,24 +16514,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -20566,233 +16577,123 @@ constructor( "NewSubscriptionPackageWithAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageWithAllocationConfig=$packageWithAllocationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTierWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionTierWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_proration_config") + private val tieredWithProrationConfig: TieredWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithProrationConfig(): TieredWithProrationConfig = - tieredWithProrationConfig.getRequired("tiered_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun _tieredWithProrationConfig() = tieredWithProrationConfig + fun tieredWithProrationConfig(): TieredWithProrationConfig = + tieredWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTierWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -20802,57 +16703,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithProrationConfig: TieredWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTierWithProrationPrice: NewSubscriptionTierWithProrationPrice ) = apply { - this.metadata = newSubscriptionTierWithProrationPrice.metadata - this.externalPriceId = newSubscriptionTierWithProrationPrice.externalPriceId - this.name = newSubscriptionTierWithProrationPrice.name - this.billableMetricId = - newSubscriptionTierWithProrationPrice.billableMetricId - this.itemId = newSubscriptionTierWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionTierWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionTierWithProrationPrice.metadata + externalPriceId = newSubscriptionTierWithProrationPrice.externalPriceId + name = newSubscriptionTierWithProrationPrice.name + billableMetricId = newSubscriptionTierWithProrationPrice.billableMetricId + itemId = newSubscriptionTierWithProrationPrice.itemId + billedInAdvance = newSubscriptionTierWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTierWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionTierWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionTierWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionTierWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionTierWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTierWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTierWithProrationPrice.conversionRate - this.modelType = newSubscriptionTierWithProrationPrice.modelType - this.tieredWithProrationConfig = + conversionRate = newSubscriptionTierWithProrationPrice.conversionRate + modelType = newSubscriptionTierWithProrationPrice.modelType + tieredWithProrationConfig = newSubscriptionTierWithProrationPrice.tieredWithProrationConfig - this.currency = newSubscriptionTierWithProrationPrice.currency - this.referenceId = newSubscriptionTierWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionTierWithProrationPrice.currency + referenceId = newSubscriptionTierWithProrationPrice.referenceId + additionalProperties = newSubscriptionTierWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -20860,75 +16756,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -20936,37 +16789,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -20974,16 +16807,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -20992,89 +16815,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithProrationConfig( tieredWithProrationConfig: TieredWithProrationConfig - ) = tieredWithProrationConfig(JsonField.of(tieredWithProrationConfig)) - - @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun tieredWithProrationConfig( - tieredWithProrationConfig: JsonField ) = apply { this.tieredWithProrationConfig = tieredWithProrationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -21082,22 +16856,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTierWithProrationPrice = NewSubscriptionTierWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithProrationConfig) { + "`tieredWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -21238,25 +17022,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithProrationConfig.Builder::class) @NoAutoDetect class TieredWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21272,24 +17049,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithProrationConfig: TieredWithProrationConfig) = apply { - additionalProperties(tieredWithProrationConfig.additionalProperties) + additionalProperties = + tieredWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithProrationConfig = TieredWithProrationConfig(additionalProperties.toImmutable()) } @@ -21316,43 +17101,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21362,57 +17130,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -21498,43 +17265,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21544,8 +17294,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -21553,49 +17303,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -21682,25 +17431,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -21715,24 +17457,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -21771,233 +17520,122 @@ constructor( "NewSubscriptionTierWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithProrationConfig=$tieredWithProrationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionUnitWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_proration_config") + private val unitWithProrationConfig: UnitWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithProrationConfig(): UnitWithProrationConfig = - unitWithProrationConfig.getRequired("unit_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun _unitWithProrationConfig() = unitWithProrationConfig + fun unitWithProrationConfig(): UnitWithProrationConfig = unitWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22007,57 +17645,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithProrationConfig: UnitWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionUnitWithProrationPrice: NewSubscriptionUnitWithProrationPrice ) = apply { - this.metadata = newSubscriptionUnitWithProrationPrice.metadata - this.externalPriceId = newSubscriptionUnitWithProrationPrice.externalPriceId - this.name = newSubscriptionUnitWithProrationPrice.name - this.billableMetricId = - newSubscriptionUnitWithProrationPrice.billableMetricId - this.itemId = newSubscriptionUnitWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionUnitWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionUnitWithProrationPrice.metadata + externalPriceId = newSubscriptionUnitWithProrationPrice.externalPriceId + name = newSubscriptionUnitWithProrationPrice.name + billableMetricId = newSubscriptionUnitWithProrationPrice.billableMetricId + itemId = newSubscriptionUnitWithProrationPrice.itemId + billedInAdvance = newSubscriptionUnitWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionUnitWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionUnitWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionUnitWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitWithProrationPrice.conversionRate - this.modelType = newSubscriptionUnitWithProrationPrice.modelType - this.unitWithProrationConfig = + conversionRate = newSubscriptionUnitWithProrationPrice.conversionRate + modelType = newSubscriptionUnitWithProrationPrice.modelType + unitWithProrationConfig = newSubscriptionUnitWithProrationPrice.unitWithProrationConfig - this.currency = newSubscriptionUnitWithProrationPrice.currency - this.referenceId = newSubscriptionUnitWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionUnitWithProrationPrice.currency + referenceId = newSubscriptionUnitWithProrationPrice.referenceId + additionalProperties = newSubscriptionUnitWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -22065,75 +17698,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -22141,37 +17731,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -22179,16 +17749,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -22197,88 +17757,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithProrationConfig(unitWithProrationConfig: UnitWithProrationConfig) = - unitWithProrationConfig(JsonField.of(unitWithProrationConfig)) - - @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun unitWithProrationConfig( - unitWithProrationConfig: JsonField - ) = apply { this.unitWithProrationConfig = unitWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithProrationConfig = unitWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -22286,22 +17799,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitWithProrationPrice = NewSubscriptionUnitWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithProrationConfig) { + "`unitWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -22442,25 +17965,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithProrationConfig.Builder::class) @NoAutoDetect class UnitWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22476,24 +17992,32 @@ constructor( @JvmSynthetic internal fun from(unitWithProrationConfig: UnitWithProrationConfig) = apply { - additionalProperties(unitWithProrationConfig.additionalProperties) + additionalProperties = + unitWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithProrationConfig = UnitWithProrationConfig(additionalProperties.toImmutable()) } @@ -22520,43 +18044,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22566,57 +18073,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -22702,43 +18208,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22748,8 +18237,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -22757,49 +18246,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -22886,25 +18374,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -22919,24 +18400,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -22975,233 +18463,122 @@ constructor( "NewSubscriptionUnitWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithProrationConfig=$unitWithProrationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionGroupedAllocationPrice.Builder::class) @NoAutoDetect class NewSubscriptionGroupedAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedAllocationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_allocation_config") + private val groupedAllocationConfig: GroupedAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedAllocationConfig(): GroupedAllocationConfig = - groupedAllocationConfig.getRequired("grouped_allocation_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun _groupedAllocationConfig() = groupedAllocationConfig + fun groupedAllocationConfig(): GroupedAllocationConfig = groupedAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionGroupedAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedAllocationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23211,57 +18588,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedAllocationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedAllocationConfig: GroupedAllocationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionGroupedAllocationPrice: NewSubscriptionGroupedAllocationPrice ) = apply { - this.metadata = newSubscriptionGroupedAllocationPrice.metadata - this.externalPriceId = newSubscriptionGroupedAllocationPrice.externalPriceId - this.name = newSubscriptionGroupedAllocationPrice.name - this.billableMetricId = - newSubscriptionGroupedAllocationPrice.billableMetricId - this.itemId = newSubscriptionGroupedAllocationPrice.itemId - this.billedInAdvance = newSubscriptionGroupedAllocationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionGroupedAllocationPrice.metadata + externalPriceId = newSubscriptionGroupedAllocationPrice.externalPriceId + name = newSubscriptionGroupedAllocationPrice.name + billableMetricId = newSubscriptionGroupedAllocationPrice.billableMetricId + itemId = newSubscriptionGroupedAllocationPrice.itemId + billedInAdvance = newSubscriptionGroupedAllocationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionGroupedAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionGroupedAllocationPrice.invoiceGroupingKey - this.cadence = newSubscriptionGroupedAllocationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionGroupedAllocationPrice.cadence + billingCycleConfiguration = newSubscriptionGroupedAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionGroupedAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionGroupedAllocationPrice.conversionRate - this.modelType = newSubscriptionGroupedAllocationPrice.modelType - this.groupedAllocationConfig = + conversionRate = newSubscriptionGroupedAllocationPrice.conversionRate + modelType = newSubscriptionGroupedAllocationPrice.modelType + groupedAllocationConfig = newSubscriptionGroupedAllocationPrice.groupedAllocationConfig - this.currency = newSubscriptionGroupedAllocationPrice.currency - this.referenceId = newSubscriptionGroupedAllocationPrice.referenceId - additionalProperties( + currency = newSubscriptionGroupedAllocationPrice.currency + referenceId = newSubscriptionGroupedAllocationPrice.referenceId + additionalProperties = newSubscriptionGroupedAllocationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -23269,75 +18641,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -23345,37 +18674,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -23383,16 +18692,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -23401,88 +18700,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedAllocationConfig(groupedAllocationConfig: GroupedAllocationConfig) = - groupedAllocationConfig(JsonField.of(groupedAllocationConfig)) - - @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun groupedAllocationConfig( - groupedAllocationConfig: JsonField - ) = apply { this.groupedAllocationConfig = groupedAllocationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.groupedAllocationConfig = groupedAllocationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -23490,22 +18742,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionGroupedAllocationPrice = NewSubscriptionGroupedAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedAllocationConfig) { + "`groupedAllocationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -23594,25 +18856,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedAllocationConfig.Builder::class) @NoAutoDetect class GroupedAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23628,24 +18883,32 @@ constructor( @JvmSynthetic internal fun from(groupedAllocationConfig: GroupedAllocationConfig) = apply { - additionalProperties(groupedAllocationConfig.additionalProperties) + additionalProperties = + groupedAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedAllocationConfig = GroupedAllocationConfig(additionalProperties.toImmutable()) } @@ -23724,43 +18987,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23770,57 +19016,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -23906,43 +19151,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -23952,8 +19180,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -23961,49 +19189,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -24090,25 +19317,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24123,24 +19343,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -24179,238 +19406,123 @@ constructor( "NewSubscriptionGroupedAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedAllocationConfig=$groupedAllocationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize( - builder = NewSubscriptionGroupedWithProratedMinimumPrice.Builder::class - ) @NoAutoDetect class NewSubscriptionGroupedWithProratedMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedWithProratedMinimumConfig: - JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_prorated_minimum_config") + private val groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = - groupedWithProratedMinimumConfig.getRequired( - "grouped_with_prorated_minimum_config" - ) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun _groupedWithProratedMinimumConfig() = groupedWithProratedMinimumConfig + fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = + groupedWithProratedMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionGroupedWithProratedMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedWithProratedMinimumConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24420,27 +19532,24 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null private var groupedWithProratedMinimumConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + GroupedWithProratedMinimumConfig? = + null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -24448,37 +19557,36 @@ constructor( newSubscriptionGroupedWithProratedMinimumPrice: NewSubscriptionGroupedWithProratedMinimumPrice ) = apply { - this.metadata = newSubscriptionGroupedWithProratedMinimumPrice.metadata - this.externalPriceId = + metadata = newSubscriptionGroupedWithProratedMinimumPrice.metadata + externalPriceId = newSubscriptionGroupedWithProratedMinimumPrice.externalPriceId - this.name = newSubscriptionGroupedWithProratedMinimumPrice.name - this.billableMetricId = + name = newSubscriptionGroupedWithProratedMinimumPrice.name + billableMetricId = newSubscriptionGroupedWithProratedMinimumPrice.billableMetricId - this.itemId = newSubscriptionGroupedWithProratedMinimumPrice.itemId - this.billedInAdvance = + itemId = newSubscriptionGroupedWithProratedMinimumPrice.itemId + billedInAdvance = newSubscriptionGroupedWithProratedMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + fixedPriceQuantity = newSubscriptionGroupedWithProratedMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionGroupedWithProratedMinimumPrice.invoiceGroupingKey - this.cadence = newSubscriptionGroupedWithProratedMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionGroupedWithProratedMinimumPrice.cadence + billingCycleConfiguration = newSubscriptionGroupedWithProratedMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionGroupedWithProratedMinimumPrice .invoicingCycleConfiguration - this.conversionRate = + conversionRate = newSubscriptionGroupedWithProratedMinimumPrice.conversionRate - this.modelType = newSubscriptionGroupedWithProratedMinimumPrice.modelType - this.groupedWithProratedMinimumConfig = + modelType = newSubscriptionGroupedWithProratedMinimumPrice.modelType + groupedWithProratedMinimumConfig = newSubscriptionGroupedWithProratedMinimumPrice .groupedWithProratedMinimumConfig - this.currency = newSubscriptionGroupedWithProratedMinimumPrice.currency - this.referenceId = - newSubscriptionGroupedWithProratedMinimumPrice.referenceId - additionalProperties( + currency = newSubscriptionGroupedWithProratedMinimumPrice.currency + referenceId = newSubscriptionGroupedWithProratedMinimumPrice.referenceId + additionalProperties = newSubscriptionGroupedWithProratedMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -24486,75 +19594,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -24562,37 +19627,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -24600,16 +19645,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -24618,53 +19653,19 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedWithProratedMinimumConfig( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig - ) = - groupedWithProratedMinimumConfig( - JsonField.of(groupedWithProratedMinimumConfig) - ) - - @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun groupedWithProratedMinimumConfig( - groupedWithProratedMinimumConfig: - JsonField ) = apply { this.groupedWithProratedMinimumConfig = groupedWithProratedMinimumConfig } @@ -24673,40 +19674,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -24714,22 +19696,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionGroupedWithProratedMinimumPrice = NewSubscriptionGroupedWithProratedMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedWithProratedMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedWithProratedMinimumConfig) { + "`groupedWithProratedMinimumConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -24818,25 +19810,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithProratedMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithProratedMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedWithProratedMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24853,26 +19838,32 @@ constructor( internal fun from( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = apply { - additionalProperties( - groupedWithProratedMinimumConfig.additionalProperties - ) + additionalProperties = + groupedWithProratedMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithProratedMinimumConfig = GroupedWithProratedMinimumConfig(additionalProperties.toImmutable()) } @@ -24952,43 +19943,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -24998,57 +19972,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -25134,43 +20107,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25180,8 +20136,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -25189,49 +20145,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -25318,25 +20273,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25351,24 +20299,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -25407,233 +20362,122 @@ constructor( "NewSubscriptionGroupedWithProratedMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithProratedMinimumConfig=$groupedWithProratedMinimumConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_with_proration_config") + private val bulkWithProrationConfig: BulkWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkWithProrationConfig(): BulkWithProrationConfig = - bulkWithProrationConfig.getRequired("bulk_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun _bulkWithProrationConfig() = bulkWithProrationConfig + fun bulkWithProrationConfig(): BulkWithProrationConfig = bulkWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25643,57 +20487,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkWithProrationConfig: BulkWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionBulkWithProrationPrice: NewSubscriptionBulkWithProrationPrice ) = apply { - this.metadata = newSubscriptionBulkWithProrationPrice.metadata - this.externalPriceId = newSubscriptionBulkWithProrationPrice.externalPriceId - this.name = newSubscriptionBulkWithProrationPrice.name - this.billableMetricId = - newSubscriptionBulkWithProrationPrice.billableMetricId - this.itemId = newSubscriptionBulkWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionBulkWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionBulkWithProrationPrice.metadata + externalPriceId = newSubscriptionBulkWithProrationPrice.externalPriceId + name = newSubscriptionBulkWithProrationPrice.name + billableMetricId = newSubscriptionBulkWithProrationPrice.billableMetricId + itemId = newSubscriptionBulkWithProrationPrice.itemId + billedInAdvance = newSubscriptionBulkWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionBulkWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionBulkWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionBulkWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkWithProrationPrice.conversionRate - this.modelType = newSubscriptionBulkWithProrationPrice.modelType - this.bulkWithProrationConfig = + conversionRate = newSubscriptionBulkWithProrationPrice.conversionRate + modelType = newSubscriptionBulkWithProrationPrice.modelType + bulkWithProrationConfig = newSubscriptionBulkWithProrationPrice.bulkWithProrationConfig - this.currency = newSubscriptionBulkWithProrationPrice.currency - this.referenceId = newSubscriptionBulkWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionBulkWithProrationPrice.currency + referenceId = newSubscriptionBulkWithProrationPrice.referenceId + additionalProperties = newSubscriptionBulkWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -25701,75 +20540,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -25777,37 +20573,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -25815,16 +20591,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -25833,88 +20599,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun bulkWithProrationConfig(bulkWithProrationConfig: BulkWithProrationConfig) = - bulkWithProrationConfig(JsonField.of(bulkWithProrationConfig)) - - @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun bulkWithProrationConfig( - bulkWithProrationConfig: JsonField - ) = apply { this.bulkWithProrationConfig = bulkWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.bulkWithProrationConfig = bulkWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -25922,47 +20641,50 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkWithProrationPrice = NewSubscriptionBulkWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkWithProrationConfig) { + "`bulkWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkWithProrationConfig.Builder::class) @NoAutoDetect class BulkWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -25978,24 +20700,32 @@ constructor( @JvmSynthetic internal fun from(bulkWithProrationConfig: BulkWithProrationConfig) = apply { - additionalProperties(bulkWithProrationConfig.additionalProperties) + additionalProperties = + bulkWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkWithProrationConfig = BulkWithProrationConfig(additionalProperties.toImmutable()) } @@ -26156,43 +20886,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26202,57 +20915,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -26338,43 +21050,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26384,8 +21079,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -26393,49 +21088,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -26522,25 +21216,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -26555,24 +21242,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -26693,14 +21387,15 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: Long?, - private val month: Long?, - private val year: Long?, - private val additionalProperties: Map, + @JsonProperty("day") private val day: Long, + @JsonProperty("month") private val month: Long?, + @JsonProperty("year") private val year: Long?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -26709,19 +21404,19 @@ constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") fun day(): Long? = day + @JsonProperty("day") fun day(): Long = day /** * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") fun month(): Long? = month + @JsonProperty("month") fun month(): Optional = Optional.ofNullable(month) /** * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored on * 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") fun year(): Long? = year + @JsonProperty("year") fun year(): Optional = Optional.ofNullable(year) @JsonAnyGetter @ExcludeMissing @@ -26744,10 +21439,11 @@ constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -26756,34 +21452,39 @@ constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") fun day(day: Long) = apply { this.day = day } + fun day(day: Long) = apply { this.day = day } /** * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") fun month(month: Long) = apply { this.month = month } + fun month(month: Long) = apply { this.month = month } /** * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") fun year(year: Long) = apply { this.year = year } + fun year(year: Long) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( checkNotNull(day) { "`day` is required but was not set" }, @@ -26811,16 +21512,17 @@ constructor( "BillingCycleAnchorConfiguration{day=$day, month=$month, year=$year, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RemoveAdjustment.Builder::class) @NoAutoDetect class RemoveAdjustment + @JsonCreator private constructor( - private val adjustmentId: String?, - private val additionalProperties: Map, + @JsonProperty("adjustment_id") private val adjustmentId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the adjustment to remove on the subscription. */ - @JsonProperty("adjustment_id") fun adjustmentId(): String? = adjustmentId + @JsonProperty("adjustment_id") fun adjustmentId(): String = adjustmentId @JsonAnyGetter @ExcludeMissing @@ -26840,28 +21542,32 @@ constructor( @JvmSynthetic internal fun from(removeAdjustment: RemoveAdjustment) = apply { - this.adjustmentId = removeAdjustment.adjustmentId - additionalProperties(removeAdjustment.additionalProperties) + adjustmentId = removeAdjustment.adjustmentId + additionalProperties = removeAdjustment.additionalProperties.toMutableMap() } /** The id of the adjustment to remove on the subscription. */ - @JsonProperty("adjustment_id") fun adjustmentId(adjustmentId: String) = apply { this.adjustmentId = adjustmentId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RemoveAdjustment = RemoveAdjustment( checkNotNull(adjustmentId) { "`adjustmentId` is required but was not set" }, @@ -26887,20 +21593,22 @@ constructor( "RemoveAdjustment{adjustmentId=$adjustmentId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RemovePrice.Builder::class) @NoAutoDetect class RemovePrice + @JsonCreator private constructor( - private val priceId: String?, - private val externalPriceId: String?, - private val additionalProperties: Map, + @JsonProperty("price_id") private val priceId: String?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the price to remove on the subscription. */ - @JsonProperty("price_id") fun priceId(): String? = priceId + @JsonProperty("price_id") fun priceId(): Optional = Optional.ofNullable(priceId) /** The external price id of the price to remove on the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) @JsonAnyGetter @ExcludeMissing @@ -26921,35 +21629,38 @@ constructor( @JvmSynthetic internal fun from(removePrice: RemovePrice) = apply { - this.priceId = removePrice.priceId - this.externalPriceId = removePrice.externalPriceId - additionalProperties(removePrice.additionalProperties) + priceId = removePrice.priceId + externalPriceId = removePrice.externalPriceId + additionalProperties = removePrice.additionalProperties.toMutableMap() } /** The id of the price to remove on the subscription. */ - @JsonProperty("price_id") fun priceId(priceId: String) = apply { this.priceId = priceId } /** The external price id of the price to remove on the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RemovePrice = RemovePrice( priceId, @@ -26976,21 +21687,22 @@ constructor( "RemovePrice{priceId=$priceId, externalPriceId=$externalPriceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ReplaceAdjustment.Builder::class) @NoAutoDetect class ReplaceAdjustment + @JsonCreator private constructor( - private val adjustment: Adjustment?, - private val replacesAdjustmentId: String?, - private val additionalProperties: Map, + @JsonProperty("adjustment") private val adjustment: Adjustment, + @JsonProperty("replaces_adjustment_id") private val replacesAdjustmentId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(): Adjustment? = adjustment + @JsonProperty("adjustment") fun adjustment(): Adjustment = adjustment /** The id of the adjustment on the plan to replace in the subscription. */ @JsonProperty("replaces_adjustment_id") - fun replacesAdjustmentId(): String? = replacesAdjustmentId + fun replacesAdjustmentId(): String = replacesAdjustmentId @JsonAnyGetter @ExcludeMissing @@ -27011,35 +21723,38 @@ constructor( @JvmSynthetic internal fun from(replaceAdjustment: ReplaceAdjustment) = apply { - this.adjustment = replaceAdjustment.adjustment - this.replacesAdjustmentId = replaceAdjustment.replacesAdjustmentId - additionalProperties(replaceAdjustment.additionalProperties) + adjustment = replaceAdjustment.adjustment + replacesAdjustmentId = replaceAdjustment.replacesAdjustmentId + additionalProperties = replaceAdjustment.additionalProperties.toMutableMap() } /** The definition of a new adjustment to create and add to the subscription. */ - @JsonProperty("adjustment") fun adjustment(adjustment: Adjustment) = apply { this.adjustment = adjustment } /** The id of the adjustment on the plan to replace in the subscription. */ - @JsonProperty("replaces_adjustment_id") fun replacesAdjustmentId(replacesAdjustmentId: String) = apply { this.replacesAdjustmentId = replacesAdjustmentId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ReplaceAdjustment = ReplaceAdjustment( checkNotNull(adjustment) { "`adjustment` is required but was not set" }, @@ -27062,8 +21777,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newPercentageDiscount(): Optional = Optional.ofNullable(newPercentageDiscount) @@ -27114,26 +21827,6 @@ constructor( } } - fun validate(): Adjustment = apply { - if (!validated) { - if ( - newPercentageDiscount == null && - newUsageDiscount == null && - newAmountDiscount == null && - newMinimum == null && - newMaximum == null - ) { - throw OrbInvalidDataException("Unknown Adjustment: $_json") - } - newPercentageDiscount?.validate() - newUsageDiscount?.validate() - newAmountDiscount?.validate() - newMinimum?.validate() - newMaximum?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -27203,40 +21896,29 @@ constructor( when (adjustmentType) { "percentage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newPercentageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newPercentageDiscount = it, _json = json) + } } "usage_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newUsageDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newUsageDiscount = it, _json = json) + } } "amount_discount" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Adjustment(newAmountDiscount = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newAmountDiscount = it, _json = json) + } } "minimum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMinimum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMinimum = it, _json = json) + } } "maximum" -> { - tryDeserialize(node, jacksonTypeRef()) { it.validate() } - ?.let { - return Adjustment(newMaximum = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Adjustment(newMaximum = it, _json = json) + } } } @@ -27266,70 +21948,39 @@ constructor( } } - @JsonDeserialize(builder = NewPercentageDiscount.Builder::class) @NoAutoDetect class NewPercentageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun percentageDiscount(): Double = - percentageDiscount.getRequired("percentage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType @JsonProperty("percentage_discount") - @ExcludeMissing - fun _percentageDiscount() = percentageDiscount + fun percentageDiscount(): Double = percentageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewPercentageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - percentageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27339,29 +21990,24 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var percentageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var percentageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newPercentageDiscount: NewPercentageDiscount) = apply { - this.appliesToPriceIds = newPercentageDiscount.appliesToPriceIds - this.isInvoiceLevel = newPercentageDiscount.isInvoiceLevel - this.adjustmentType = newPercentageDiscount.adjustmentType - this.percentageDiscount = newPercentageDiscount.percentageDiscount - additionalProperties(newPercentageDiscount.additionalProperties) + appliesToPriceIds = newPercentageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newPercentageDiscount.isInvoiceLevel + adjustmentType = newPercentageDiscount.adjustmentType + percentageDiscount = newPercentageDiscount.percentageDiscount + additionalProperties = + newPercentageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -27369,45 +22015,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun percentageDiscount(percentageDiscount: Double) = - percentageDiscount(JsonField.of(percentageDiscount)) - - @JsonProperty("percentage_discount") - @ExcludeMissing - fun percentageDiscount(percentageDiscount: JsonField) = apply { + fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27415,12 +22041,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewPercentageDiscount = NewPercentageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - percentageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(percentageDiscount) { + "`percentageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -27495,67 +22136,38 @@ constructor( "NewPercentageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewUsageDiscount.Builder::class) @NoAutoDetect class NewUsageDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("usage_discount") private val usageDiscount: Double, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun usageDiscount(): Double = usageDiscount.getRequired("usage_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("usage_discount") @ExcludeMissing fun _usageDiscount() = usageDiscount + @JsonProperty("usage_discount") fun usageDiscount(): Double = usageDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewUsageDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - usageDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27565,29 +22177,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var usageDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var usageDiscount: Double? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newUsageDiscount: NewUsageDiscount) = apply { - this.appliesToPriceIds = newUsageDiscount.appliesToPriceIds - this.isInvoiceLevel = newUsageDiscount.isInvoiceLevel - this.adjustmentType = newUsageDiscount.adjustmentType - this.usageDiscount = newUsageDiscount.usageDiscount - additionalProperties(newUsageDiscount.additionalProperties) + appliesToPriceIds = newUsageDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newUsageDiscount.isInvoiceLevel + adjustmentType = newUsageDiscount.adjustmentType + usageDiscount = newUsageDiscount.usageDiscount + additionalProperties = newUsageDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -27595,45 +22201,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun usageDiscount(usageDiscount: Double) = - usageDiscount(JsonField.of(usageDiscount)) - - @JsonProperty("usage_discount") - @ExcludeMissing - fun usageDiscount(usageDiscount: JsonField) = apply { + fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27641,12 +22227,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewUsageDiscount = NewUsageDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - usageDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(usageDiscount) { + "`usageDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -27721,69 +22322,38 @@ constructor( "NewUsageDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewAmountDiscount.Builder::class) @NoAutoDetect class NewAmountDiscount + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("amount_discount") private val amountDiscount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun amountDiscount(): String = amountDiscount.getRequired("amount_discount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("amount_discount") - @ExcludeMissing - fun _amountDiscount() = amountDiscount + @JsonProperty("amount_discount") fun amountDiscount(): String = amountDiscount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewAmountDiscount = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - amountDiscount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -27793,29 +22363,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var amountDiscount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var amountDiscount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newAmountDiscount: NewAmountDiscount) = apply { - this.appliesToPriceIds = newAmountDiscount.appliesToPriceIds - this.isInvoiceLevel = newAmountDiscount.isInvoiceLevel - this.adjustmentType = newAmountDiscount.adjustmentType - this.amountDiscount = newAmountDiscount.amountDiscount - additionalProperties(newAmountDiscount.additionalProperties) + appliesToPriceIds = newAmountDiscount.appliesToPriceIds.toMutableList() + isInvoiceLevel = newAmountDiscount.isInvoiceLevel + adjustmentType = newAmountDiscount.adjustmentType + amountDiscount = newAmountDiscount.amountDiscount + additionalProperties = newAmountDiscount.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -27823,45 +22387,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun amountDiscount(amountDiscount: String) = - amountDiscount(JsonField.of(amountDiscount)) - - @JsonProperty("amount_discount") - @ExcludeMissing - fun amountDiscount(amountDiscount: JsonField) = apply { + fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -27869,12 +22413,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewAmountDiscount = NewAmountDiscount( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - amountDiscount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(amountDiscount) { + "`amountDiscount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -27949,75 +22508,42 @@ constructor( "NewAmountDiscount{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMinimum.Builder::class) @NoAutoDetect class NewMinimum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("item_id") private val itemId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(): String = itemId.getRequired("item_id") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("minimum_amount") @ExcludeMissing fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMinimum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - minimumAmount() - itemId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -28027,31 +22553,25 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var minimumAmount: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var minimumAmount: String? = null + private var itemId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMinimum: NewMinimum) = apply { - this.appliesToPriceIds = newMinimum.appliesToPriceIds - this.isInvoiceLevel = newMinimum.isInvoiceLevel - this.adjustmentType = newMinimum.adjustmentType - this.minimumAmount = newMinimum.minimumAmount - this.itemId = newMinimum.itemId - additionalProperties(newMinimum.additionalProperties) + appliesToPriceIds = newMinimum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMinimum.isInvoiceLevel + adjustmentType = newMinimum.adjustmentType + minimumAmount = newMinimum.minimumAmount + itemId = newMinimum.itemId + additionalProperties = newMinimum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -28059,53 +22579,28 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** The item ID that revenue from this minimum will be attributed to. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28113,13 +22608,28 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMinimum = NewMinimum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - minimumAmount, - itemId, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, + checkNotNull(itemId) { "`itemId` is required but was not set" }, additionalProperties.toImmutable(), ) } @@ -28194,67 +22704,38 @@ constructor( "NewMinimum{appliesToPriceIds=$appliesToPriceIds, isInvoiceLevel=$isInvoiceLevel, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewMaximum.Builder::class) @NoAutoDetect class NewMaximum + @JsonCreator private constructor( - private val appliesToPriceIds: JsonField>, - private val isInvoiceLevel: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("applies_to_price_ids") private val appliesToPriceIds: List, + @JsonProperty("is_invoice_level") private val isInvoiceLevel: Boolean?, + @JsonProperty("adjustment_type") private val adjustmentType: AdjustmentType, + @JsonProperty("maximum_amount") private val maximumAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(): List = - appliesToPriceIds.getRequired("applies_to_price_ids") - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it will - * be applied at the invoice level, possibly to multiple prices. - */ - fun isInvoiceLevel(): Optional = - Optional.ofNullable(isInvoiceLevel.getNullable("is_invoice_level")) - - fun adjustmentType(): AdjustmentType = adjustmentType.getRequired("adjustment_type") - - fun maximumAmount(): String = maximumAmount.getRequired("maximum_amount") - /** The set of price IDs to which this adjustment applies. */ @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun _appliesToPriceIds() = appliesToPriceIds + fun appliesToPriceIds(): List = appliesToPriceIds /** * When false, this adjustment will be applied to a single price. Otherwise, it will * be applied at the invoice level, possibly to multiple prices. */ @JsonProperty("is_invoice_level") - @ExcludeMissing - fun _isInvoiceLevel() = isInvoiceLevel + fun isInvoiceLevel(): Optional = Optional.ofNullable(isInvoiceLevel) @JsonProperty("adjustment_type") - @ExcludeMissing - fun _adjustmentType() = adjustmentType + fun adjustmentType(): AdjustmentType = adjustmentType - @JsonProperty("maximum_amount") @ExcludeMissing fun _maximumAmount() = maximumAmount + @JsonProperty("maximum_amount") fun maximumAmount(): String = maximumAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewMaximum = apply { - if (!validated) { - appliesToPriceIds() - isInvoiceLevel() - adjustmentType() - maximumAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -28264,29 +22745,23 @@ constructor( class Builder { - private var appliesToPriceIds: JsonField> = JsonMissing.of() - private var isInvoiceLevel: JsonField = JsonMissing.of() - private var adjustmentType: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() + private var appliesToPriceIds: List? = null + private var isInvoiceLevel: Boolean? = null + private var adjustmentType: AdjustmentType? = null + private var maximumAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newMaximum: NewMaximum) = apply { - this.appliesToPriceIds = newMaximum.appliesToPriceIds - this.isInvoiceLevel = newMaximum.isInvoiceLevel - this.adjustmentType = newMaximum.adjustmentType - this.maximumAmount = newMaximum.maximumAmount - additionalProperties(newMaximum.additionalProperties) + appliesToPriceIds = newMaximum.appliesToPriceIds.toMutableList() + isInvoiceLevel = newMaximum.isInvoiceLevel + adjustmentType = newMaximum.adjustmentType + maximumAmount = newMaximum.maximumAmount + additionalProperties = newMaximum.additionalProperties.toMutableMap() } /** The set of price IDs to which this adjustment applies. */ - fun appliesToPriceIds(appliesToPriceIds: List) = - appliesToPriceIds(JsonField.of(appliesToPriceIds)) - - /** The set of price IDs to which this adjustment applies. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing - fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { + fun appliesToPriceIds(appliesToPriceIds: List) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -28294,45 +22769,25 @@ constructor( * When false, this adjustment will be applied to a single price. Otherwise, it * will be applied at the invoice level, possibly to multiple prices. */ - fun isInvoiceLevel(isInvoiceLevel: Boolean) = - isInvoiceLevel(JsonField.of(isInvoiceLevel)) - - /** - * When false, this adjustment will be applied to a single price. Otherwise, it - * will be applied at the invoice level, possibly to multiple prices. - */ - @JsonProperty("is_invoice_level") - @ExcludeMissing - fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { + fun isInvoiceLevel(isInvoiceLevel: Boolean) = apply { this.isInvoiceLevel = isInvoiceLevel } - fun adjustmentType(adjustmentType: AdjustmentType) = - adjustmentType(JsonField.of(adjustmentType)) - - @JsonProperty("adjustment_type") - @ExcludeMissing - fun adjustmentType(adjustmentType: JsonField) = apply { + fun adjustmentType(adjustmentType: AdjustmentType) = apply { this.adjustmentType = adjustmentType } - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28340,12 +22795,27 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewMaximum = NewMaximum( - appliesToPriceIds.map { it.toImmutable() }, + checkNotNull(appliesToPriceIds) { + "`appliesToPriceIds` is required but was not set" + } + .toImmutable(), isInvoiceLevel, - adjustmentType, - maximumAmount, + checkNotNull(adjustmentType) { + "`adjustmentType` is required but was not set" + }, + checkNotNull(maximumAmount) { + "`maximumAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -28439,53 +22909,59 @@ constructor( "ReplaceAdjustment{adjustment=$adjustment, replacesAdjustmentId=$replacesAdjustmentId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = ReplacePrice.Builder::class) @NoAutoDetect class ReplacePrice + @JsonCreator private constructor( - private val priceId: String?, - private val externalPriceId: String?, - private val price: Price?, - private val fixedPriceQuantity: Double?, - private val replacesPriceId: String?, - private val minimumAmount: String?, - private val maximumAmount: String?, - private val discounts: List?, - private val additionalProperties: Map, + @JsonProperty("price_id") private val priceId: String?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("price") private val price: Price?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("replaces_price_id") private val replacesPriceId: String, + @JsonProperty("minimum_amount") private val minimumAmount: String?, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("discounts") private val discounts: List?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(): String? = priceId + @JsonProperty("price_id") fun priceId(): Optional = Optional.ofNullable(priceId) /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(): String? = externalPriceId + @JsonProperty("external_price_id") + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(): Price? = price + @JsonProperty("price") fun price(): Optional = Optional.ofNullable(price) /** The new quantity of the price, if the price is a fixed price. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(): Double? = fixedPriceQuantity + @JsonProperty("fixed_price_quantity") + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The id of the price on the plan to replace in the subscription. */ - @JsonProperty("replaces_price_id") fun replacesPriceId(): String? = replacesPriceId + @JsonProperty("replaces_price_id") fun replacesPriceId(): String = replacesPriceId /** * [DEPRECATED] Use add_adjustments instead. The subscription's minimum amount for the * replacement price. */ - @JsonProperty("minimum_amount") fun minimumAmount(): String? = minimumAmount + @JsonProperty("minimum_amount") + fun minimumAmount(): Optional = Optional.ofNullable(minimumAmount) /** * [DEPRECATED] Use add_adjustments instead. The subscription's maximum amount for the * replacement price. */ - @JsonProperty("maximum_amount") fun maximumAmount(): String? = maximumAmount + @JsonProperty("maximum_amount") + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** * [DEPRECATED] Use add_adjustments instead. The subscription's discounts for the * replacement price. */ - @JsonProperty("discounts") fun discounts(): List? = discounts + @JsonProperty("discounts") + fun discounts(): Optional> = Optional.ofNullable(discounts) @JsonAnyGetter @ExcludeMissing @@ -28512,38 +22988,34 @@ constructor( @JvmSynthetic internal fun from(replacePrice: ReplacePrice) = apply { - this.priceId = replacePrice.priceId - this.externalPriceId = replacePrice.externalPriceId - this.price = replacePrice.price - this.fixedPriceQuantity = replacePrice.fixedPriceQuantity - this.replacesPriceId = replacePrice.replacesPriceId - this.minimumAmount = replacePrice.minimumAmount - this.maximumAmount = replacePrice.maximumAmount - this.discounts = replacePrice.discounts - additionalProperties(replacePrice.additionalProperties) + priceId = replacePrice.priceId + externalPriceId = replacePrice.externalPriceId + price = replacePrice.price + fixedPriceQuantity = replacePrice.fixedPriceQuantity + replacesPriceId = replacePrice.replacesPriceId + minimumAmount = replacePrice.minimumAmount + maximumAmount = replacePrice.maximumAmount + discounts = replacePrice.discounts?.toMutableList() + additionalProperties = replacePrice.additionalProperties.toMutableMap() } /** The id of the price to add to the subscription. */ - @JsonProperty("price_id") fun priceId(priceId: String) = apply { this.priceId = priceId } /** The external price id of the price to add to the subscription. */ - @JsonProperty("external_price_id") fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The definition of a new price to create and add to the subscription. */ - @JsonProperty("price") fun price(price: Price) = apply { this.price = price } + fun price(price: Price) = apply { this.price = price } /** The new quantity of the price, if the price is a fixed price. */ - @JsonProperty("fixed_price_quantity") fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The id of the price on the plan to replace in the subscription. */ - @JsonProperty("replaces_price_id") fun replacesPriceId(replacesPriceId: String) = apply { this.replacesPriceId = replacesPriceId } @@ -28552,37 +23024,39 @@ constructor( * [DEPRECATED] Use add_adjustments instead. The subscription's minimum amount for the * replacement price. */ - @JsonProperty("minimum_amount") fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** * [DEPRECATED] Use add_adjustments instead. The subscription's maximum amount for the * replacement price. */ - @JsonProperty("maximum_amount") fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** * [DEPRECATED] Use add_adjustments instead. The subscription's discounts for the * replacement price. */ - @JsonProperty("discounts") fun discounts(discounts: List) = apply { this.discounts = discounts } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ReplacePrice = ReplacePrice( priceId, @@ -28599,33 +23073,36 @@ constructor( ) } - @JsonDeserialize(builder = Discount.Builder::class) @NoAutoDetect class Discount + @JsonCreator private constructor( - private val discountType: DiscountType?, - private val percentageDiscount: Double?, - private val usageDiscount: Double?, - private val amountDiscount: String?, - private val additionalProperties: Map, + @JsonProperty("discount_type") private val discountType: DiscountType, + @JsonProperty("percentage_discount") private val percentageDiscount: Double?, + @JsonProperty("usage_discount") private val usageDiscount: Double?, + @JsonProperty("amount_discount") private val amountDiscount: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - @JsonProperty("discount_type") fun discountType(): DiscountType? = discountType + @JsonProperty("discount_type") fun discountType(): DiscountType = discountType /** * Only available if discount_type is `percentage`. This is a number between 0 and 1. */ @JsonProperty("percentage_discount") - fun percentageDiscount(): Double? = percentageDiscount + fun percentageDiscount(): Optional = Optional.ofNullable(percentageDiscount) /** * Only available if discount_type is `usage`. Number of usage units that this discount * is for */ - @JsonProperty("usage_discount") fun usageDiscount(): Double? = usageDiscount + @JsonProperty("usage_discount") + fun usageDiscount(): Optional = Optional.ofNullable(usageDiscount) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") fun amountDiscount(): String? = amountDiscount + @JsonProperty("amount_discount") + fun amountDiscount(): Optional = Optional.ofNullable(amountDiscount) @JsonAnyGetter @ExcludeMissing @@ -28648,14 +23125,13 @@ constructor( @JvmSynthetic internal fun from(discount: Discount) = apply { - this.discountType = discount.discountType - this.percentageDiscount = discount.percentageDiscount - this.usageDiscount = discount.usageDiscount - this.amountDiscount = discount.amountDiscount - additionalProperties(discount.additionalProperties) + discountType = discount.discountType + percentageDiscount = discount.percentageDiscount + usageDiscount = discount.usageDiscount + amountDiscount = discount.amountDiscount + additionalProperties = discount.additionalProperties.toMutableMap() } - @JsonProperty("discount_type") fun discountType(discountType: DiscountType) = apply { this.discountType = discountType } @@ -28664,7 +23140,6 @@ constructor( * Only available if discount_type is `percentage`. This is a number between 0 * and 1. */ - @JsonProperty("percentage_discount") fun percentageDiscount(percentageDiscount: Double) = apply { this.percentageDiscount = percentageDiscount } @@ -28673,25 +23148,22 @@ constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") fun usageDiscount(usageDiscount: Double) = apply { this.usageDiscount = usageDiscount } /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") fun amountDiscount(amountDiscount: String) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -28699,6 +23171,14 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Discount = Discount( checkNotNull(discountType) { "`discountType` is required but was not set" }, @@ -28833,8 +23313,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun newSubscriptionUnitPrice(): Optional = Optional.ofNullable(newSubscriptionUnitPrice) @@ -29083,52 +23561,6 @@ constructor( } } - fun validate(): Price = apply { - if (!validated) { - if ( - newSubscriptionUnitPrice == null && - newSubscriptionPackagePrice == null && - newSubscriptionMatrixPrice == null && - newSubscriptionTieredPrice == null && - newSubscriptionTieredBpsPrice == null && - newSubscriptionBpsPrice == null && - newSubscriptionBulkBpsPrice == null && - newSubscriptionBulkPrice == null && - newSubscriptionThresholdTotalAmountPrice == null && - newSubscriptionTieredPackagePrice == null && - newSubscriptionTieredWithMinimumPrice == null && - newSubscriptionUnitWithPercentPrice == null && - newSubscriptionPackageWithAllocationPrice == null && - newSubscriptionTierWithProrationPrice == null && - newSubscriptionUnitWithProrationPrice == null && - newSubscriptionGroupedAllocationPrice == null && - newSubscriptionGroupedWithProratedMinimumPrice == null && - newSubscriptionBulkWithProrationPrice == null - ) { - throw OrbInvalidDataException("Unknown Price: $_json") - } - newSubscriptionUnitPrice?.validate() - newSubscriptionPackagePrice?.validate() - newSubscriptionMatrixPrice?.validate() - newSubscriptionTieredPrice?.validate() - newSubscriptionTieredBpsPrice?.validate() - newSubscriptionBpsPrice?.validate() - newSubscriptionBulkBpsPrice?.validate() - newSubscriptionBulkPrice?.validate() - newSubscriptionThresholdTotalAmountPrice?.validate() - newSubscriptionTieredPackagePrice?.validate() - newSubscriptionTieredWithMinimumPrice?.validate() - newSubscriptionUnitWithPercentPrice?.validate() - newSubscriptionPackageWithAllocationPrice?.validate() - newSubscriptionTierWithProrationPrice?.validate() - newSubscriptionUnitWithProrationPrice?.validate() - newSubscriptionGroupedAllocationPrice?.validate() - newSubscriptionGroupedWithProratedMinimumPrice?.validate() - newSubscriptionBulkWithProrationPrice?.validate() - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -29397,76 +23829,55 @@ constructor( when (modelType) { "unit" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionUnitPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionUnitPrice = it, _json = json) + } } "package" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionPackagePrice = it, _json = json) } } "matrix" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionMatrixPrice = it, _json = json) } } "tiered" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionTieredPrice = it, _json = json) } } "tiered_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionTieredBpsPrice = it, _json = json) } } "bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionBpsPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionBpsPrice = it, _json = json) + } } "bulk_bps" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } + tryDeserialize(node, jacksonTypeRef()) ?.let { return Price(newSubscriptionBulkBpsPrice = it, _json = json) } } "bulk" -> { - tryDeserialize(node, jacksonTypeRef()) { - it.validate() - } - ?.let { - return Price(newSubscriptionBulkPrice = it, _json = json) - } + tryDeserialize(node, jacksonTypeRef())?.let { + return Price(newSubscriptionBulkPrice = it, _json = json) + } } "threshold_total_amount" -> { tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionThresholdTotalAmountPrice = it, @@ -29478,9 +23889,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTieredPackagePrice = it, @@ -29492,9 +23901,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTieredWithMinimumPrice = it, @@ -29506,9 +23913,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionUnitWithPercentPrice = it, @@ -29520,9 +23925,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionPackageWithAllocationPrice = it, @@ -29534,9 +23937,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionTierWithProrationPrice = it, @@ -29548,9 +23949,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionUnitWithProrationPrice = it, @@ -29562,9 +23961,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionGroupedAllocationPrice = it, @@ -29576,9 +23973,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionGroupedWithProratedMinimumPrice = it, @@ -29590,9 +23985,7 @@ constructor( tryDeserialize( node, jacksonTypeRef() - ) { - it.validate() - } + ) ?.let { return Price( newSubscriptionBulkWithProrationPrice = it, @@ -29658,230 +24051,120 @@ constructor( } } - @JsonDeserialize(builder = NewSubscriptionUnitPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_config") private val unitConfig: UnitConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitConfig(): UnitConfig = unitConfig.getRequired("unit_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("unit_config") @ExcludeMissing fun _unitConfig() = unitConfig + @JsonProperty("unit_config") fun unitConfig(): UnitConfig = unitConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -29891,48 +24174,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitConfig: UnitConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionUnitPrice: NewSubscriptionUnitPrice) = apply { - this.metadata = newSubscriptionUnitPrice.metadata - this.externalPriceId = newSubscriptionUnitPrice.externalPriceId - this.name = newSubscriptionUnitPrice.name - this.billableMetricId = newSubscriptionUnitPrice.billableMetricId - this.itemId = newSubscriptionUnitPrice.itemId - this.billedInAdvance = newSubscriptionUnitPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionUnitPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionUnitPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionUnitPrice.metadata + externalPriceId = newSubscriptionUnitPrice.externalPriceId + name = newSubscriptionUnitPrice.name + billableMetricId = newSubscriptionUnitPrice.billableMetricId + itemId = newSubscriptionUnitPrice.itemId + billedInAdvance = newSubscriptionUnitPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionUnitPrice.invoiceGroupingKey + cadence = newSubscriptionUnitPrice.cadence + billingCycleConfiguration = newSubscriptionUnitPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitPrice.conversionRate - this.modelType = newSubscriptionUnitPrice.modelType - this.unitConfig = newSubscriptionUnitPrice.unitConfig - this.currency = newSubscriptionUnitPrice.currency - this.referenceId = newSubscriptionUnitPrice.referenceId - additionalProperties(newSubscriptionUnitPrice.additionalProperties) + conversionRate = newSubscriptionUnitPrice.conversionRate + modelType = newSubscriptionUnitPrice.modelType + unitConfig = newSubscriptionUnitPrice.unitConfig + currency = newSubscriptionUnitPrice.currency + referenceId = newSubscriptionUnitPrice.referenceId + additionalProperties = + newSubscriptionUnitPrice.additionalProperties.toMutableMap() } /** @@ -29940,75 +24221,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -30016,37 +24254,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -30054,16 +24272,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -30072,87 +24280,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun unitConfig(unitConfig: UnitConfig) = unitConfig(JsonField.of(unitConfig)) - - @JsonProperty("unit_config") - @ExcludeMissing - fun unitConfig(unitConfig: JsonField) = apply { - this.unitConfig = unitConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun unitConfig(unitConfig: UnitConfig) = apply { this.unitConfig = unitConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -30160,22 +24319,30 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitPrice = NewSubscriptionUnitPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitConfig) { "`unitConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), @@ -30316,33 +24483,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitConfig.Builder::class) @NoAutoDetect class UnitConfig + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Rate per unit of usage */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Rate per unit of usage */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitConfig = apply { - if (!validated) { - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30352,43 +24508,48 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(unitConfig: UnitConfig) = apply { - this.unitAmount = unitConfig.unitAmount - additionalProperties(unitConfig.additionalProperties) + unitAmount = unitConfig.unitAmount + additionalProperties = unitConfig.additionalProperties.toMutableMap() } /** Rate per unit of usage */ - fun unitAmount(unitAmount: String) = unitAmount(JsonField.of(unitAmount)) - - /** Rate per unit of usage */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { - this.unitAmount = unitAmount - } + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitConfig = - UnitConfig(unitAmount, additionalProperties.toImmutable()) + UnitConfig( + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + additionalProperties.toImmutable() + ) } override fun equals(other: Any?): Boolean { @@ -30413,43 +24574,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30459,57 +24603,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -30595,43 +24738,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30641,8 +24767,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -30650,49 +24776,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -30779,25 +24904,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -30812,24 +24930,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -30868,230 +24993,120 @@ constructor( "NewSubscriptionUnitPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitConfig=$unitConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionPackagePrice.Builder::class) @NoAutoDetect class NewSubscriptionPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_config") private val packageConfig: PackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageConfig(): PackageConfig = packageConfig.getRequired("package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("package_config") @ExcludeMissing fun _packageConfig() = packageConfig + @JsonProperty("package_config") fun packageConfig(): PackageConfig = packageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31101,49 +25116,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageConfig: PackageConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionPackagePrice: NewSubscriptionPackagePrice) = apply { - this.metadata = newSubscriptionPackagePrice.metadata - this.externalPriceId = newSubscriptionPackagePrice.externalPriceId - this.name = newSubscriptionPackagePrice.name - this.billableMetricId = newSubscriptionPackagePrice.billableMetricId - this.itemId = newSubscriptionPackagePrice.itemId - this.billedInAdvance = newSubscriptionPackagePrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionPackagePrice.invoiceGroupingKey - this.cadence = newSubscriptionPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionPackagePrice.metadata + externalPriceId = newSubscriptionPackagePrice.externalPriceId + name = newSubscriptionPackagePrice.name + billableMetricId = newSubscriptionPackagePrice.billableMetricId + itemId = newSubscriptionPackagePrice.itemId + billedInAdvance = newSubscriptionPackagePrice.billedInAdvance + fixedPriceQuantity = newSubscriptionPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionPackagePrice.invoiceGroupingKey + cadence = newSubscriptionPackagePrice.cadence + billingCycleConfiguration = newSubscriptionPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionPackagePrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionPackagePrice.conversionRate - this.modelType = newSubscriptionPackagePrice.modelType - this.packageConfig = newSubscriptionPackagePrice.packageConfig - this.currency = newSubscriptionPackagePrice.currency - this.referenceId = newSubscriptionPackagePrice.referenceId - additionalProperties(newSubscriptionPackagePrice.additionalProperties) + conversionRate = newSubscriptionPackagePrice.conversionRate + modelType = newSubscriptionPackagePrice.modelType + packageConfig = newSubscriptionPackagePrice.packageConfig + currency = newSubscriptionPackagePrice.currency + referenceId = newSubscriptionPackagePrice.referenceId + additionalProperties = + newSubscriptionPackagePrice.additionalProperties.toMutableMap() } /** @@ -31151,75 +25164,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -31227,37 +25197,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -31265,16 +25215,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -31283,47 +25223,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun packageConfig(packageConfig: PackageConfig) = - packageConfig(JsonField.of(packageConfig)) - - @JsonProperty("package_config") - @ExcludeMissing - fun packageConfig(packageConfig: JsonField) = apply { + fun packageConfig(packageConfig: PackageConfig) = apply { this.packageConfig = packageConfig } @@ -31331,40 +25242,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -31372,22 +25264,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionPackagePrice = NewSubscriptionPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageConfig) { + "`packageConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -31528,49 +25430,29 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageConfig.Builder::class) @NoAutoDetect class PackageConfig + @JsonCreator private constructor( - private val packageAmount: JsonField, - private val packageSize: JsonField, - private val additionalProperties: Map, + @JsonProperty("package_amount") private val packageAmount: String, + @JsonProperty("package_size") private val packageSize: Long, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** A currency amount to rate usage by */ - fun packageAmount(): String = packageAmount.getRequired("package_amount") - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - fun packageSize(): Long = packageSize.getRequired("package_size") - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun _packageAmount() = packageAmount + @JsonProperty("package_amount") fun packageAmount(): String = packageAmount /** * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - @JsonProperty("package_size") @ExcludeMissing fun _packageSize() = packageSize + @JsonProperty("package_size") fun packageSize(): Long = packageSize @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageConfig = apply { - if (!validated) { - packageAmount() - packageSize() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31580,26 +25462,20 @@ constructor( class Builder { - private var packageAmount: JsonField = JsonMissing.of() - private var packageSize: JsonField = JsonMissing.of() + private var packageAmount: String? = null + private var packageSize: Long? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(packageConfig: PackageConfig) = apply { - this.packageAmount = packageConfig.packageAmount - this.packageSize = packageConfig.packageSize - additionalProperties(packageConfig.additionalProperties) + packageAmount = packageConfig.packageAmount + packageSize = packageConfig.packageSize + additionalProperties = packageConfig.additionalProperties.toMutableMap() } /** A currency amount to rate usage by */ - fun packageAmount(packageAmount: String) = - packageAmount(JsonField.of(packageAmount)) - - /** A currency amount to rate usage by */ - @JsonProperty("package_amount") - @ExcludeMissing - fun packageAmount(packageAmount: JsonField) = apply { + fun packageAmount(packageAmount: String) = apply { this.packageAmount = packageAmount } @@ -31607,37 +25483,40 @@ constructor( * An integer amount to represent package size. For example, 1000 here would * divide usage by 1000 before multiplying by package_amount in rating */ - fun packageSize(packageSize: Long) = packageSize(JsonField.of(packageSize)) - - /** - * An integer amount to represent package size. For example, 1000 here would - * divide usage by 1000 before multiplying by package_amount in rating - */ - @JsonProperty("package_size") - @ExcludeMissing - fun packageSize(packageSize: JsonField) = apply { + fun packageSize(packageSize: Long) = apply { this.packageSize = packageSize } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageConfig = PackageConfig( - packageAmount, - packageSize, + checkNotNull(packageAmount) { + "`packageAmount` is required but was not set" + }, + checkNotNull(packageSize) { + "`packageSize` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -31664,43 +25543,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31710,57 +25572,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -31846,43 +25707,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -31892,8 +25736,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -31901,49 +25745,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -32030,25 +25873,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32063,24 +25899,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -32119,230 +25962,120 @@ constructor( "NewSubscriptionPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageConfig=$packageConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionMatrixPrice.Builder::class) @NoAutoDetect class NewSubscriptionMatrixPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val matrixConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("matrix_config") private val matrixConfig: MatrixConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun matrixConfig(): MatrixConfig = matrixConfig.getRequired("matrix_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("matrix_config") @ExcludeMissing fun _matrixConfig() = matrixConfig + @JsonProperty("matrix_config") fun matrixConfig(): MatrixConfig = matrixConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionMatrixPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - matrixConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32352,49 +26085,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var matrixConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var matrixConfig: MatrixConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionMatrixPrice: NewSubscriptionMatrixPrice) = apply { - this.metadata = newSubscriptionMatrixPrice.metadata - this.externalPriceId = newSubscriptionMatrixPrice.externalPriceId - this.name = newSubscriptionMatrixPrice.name - this.billableMetricId = newSubscriptionMatrixPrice.billableMetricId - this.itemId = newSubscriptionMatrixPrice.itemId - this.billedInAdvance = newSubscriptionMatrixPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionMatrixPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionMatrixPrice.invoiceGroupingKey - this.cadence = newSubscriptionMatrixPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionMatrixPrice.metadata + externalPriceId = newSubscriptionMatrixPrice.externalPriceId + name = newSubscriptionMatrixPrice.name + billableMetricId = newSubscriptionMatrixPrice.billableMetricId + itemId = newSubscriptionMatrixPrice.itemId + billedInAdvance = newSubscriptionMatrixPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionMatrixPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionMatrixPrice.invoiceGroupingKey + cadence = newSubscriptionMatrixPrice.cadence + billingCycleConfiguration = newSubscriptionMatrixPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionMatrixPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionMatrixPrice.conversionRate - this.modelType = newSubscriptionMatrixPrice.modelType - this.matrixConfig = newSubscriptionMatrixPrice.matrixConfig - this.currency = newSubscriptionMatrixPrice.currency - this.referenceId = newSubscriptionMatrixPrice.referenceId - additionalProperties(newSubscriptionMatrixPrice.additionalProperties) + conversionRate = newSubscriptionMatrixPrice.conversionRate + modelType = newSubscriptionMatrixPrice.modelType + matrixConfig = newSubscriptionMatrixPrice.matrixConfig + currency = newSubscriptionMatrixPrice.currency + referenceId = newSubscriptionMatrixPrice.referenceId + additionalProperties = + newSubscriptionMatrixPrice.additionalProperties.toMutableMap() } /** @@ -32402,75 +26133,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -32478,37 +26166,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -32516,16 +26184,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -32534,47 +26192,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun matrixConfig(matrixConfig: MatrixConfig) = - matrixConfig(JsonField.of(matrixConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("matrix_config") - @ExcludeMissing - fun matrixConfig(matrixConfig: JsonField) = apply { + fun matrixConfig(matrixConfig: MatrixConfig) = apply { this.matrixConfig = matrixConfig } @@ -32582,40 +26211,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -32623,22 +26233,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionMatrixPrice = NewSubscriptionMatrixPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - matrixConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(matrixConfig) { + "`matrixConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -32727,61 +26347,35 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = MatrixConfig.Builder::class) @NoAutoDetect class MatrixConfig + @JsonCreator private constructor( - private val dimensions: JsonField>, - private val defaultUnitAmount: JsonField, - private val matrixValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("dimensions") private val dimensions: List, + @JsonProperty("default_unit_amount") private val defaultUnitAmount: String, + @JsonProperty("matrix_values") private val matrixValues: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** One or two event property values to evaluate matrix groups by */ - fun dimensions(): List = dimensions.getRequired("dimensions") - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - fun defaultUnitAmount(): String = - defaultUnitAmount.getRequired("default_unit_amount") - - /** Matrix values for specified matrix grouping keys */ - fun matrixValues(): List = - matrixValues.getRequired("matrix_values") - - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") @ExcludeMissing fun _dimensions() = dimensions + @JsonProperty("dimensions") fun dimensions(): List = dimensions /** * Default per unit rate for any usage not bucketed into a specified * matrix_value */ @JsonProperty("default_unit_amount") - @ExcludeMissing - fun _defaultUnitAmount() = defaultUnitAmount + fun defaultUnitAmount(): String = defaultUnitAmount /** Matrix values for specified matrix grouping keys */ @JsonProperty("matrix_values") - @ExcludeMissing - fun _matrixValues() = matrixValues + fun matrixValues(): List = matrixValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixConfig = apply { - if (!validated) { - dimensions() - defaultUnitAmount() - matrixValues().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32791,28 +26385,22 @@ constructor( class Builder { - private var dimensions: JsonField> = JsonMissing.of() - private var defaultUnitAmount: JsonField = JsonMissing.of() - private var matrixValues: JsonField> = JsonMissing.of() + private var dimensions: List? = null + private var defaultUnitAmount: String? = null + private var matrixValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixConfig: MatrixConfig) = apply { - this.dimensions = matrixConfig.dimensions - this.defaultUnitAmount = matrixConfig.defaultUnitAmount - this.matrixValues = matrixConfig.matrixValues - additionalProperties(matrixConfig.additionalProperties) + dimensions = matrixConfig.dimensions.toMutableList() + defaultUnitAmount = matrixConfig.defaultUnitAmount + matrixValues = matrixConfig.matrixValues.toMutableList() + additionalProperties = matrixConfig.additionalProperties.toMutableMap() } /** One or two event property values to evaluate matrix groups by */ - fun dimensions(dimensions: List) = - dimensions(JsonField.of(dimensions)) - - /** One or two event property values to evaluate matrix groups by */ - @JsonProperty("dimensions") - @ExcludeMissing - fun dimensions(dimensions: JsonField>) = apply { + fun dimensions(dimensions: List) = apply { this.dimensions = dimensions } @@ -32820,78 +26408,68 @@ constructor( * Default per unit rate for any usage not bucketed into a specified * matrix_value */ - fun defaultUnitAmount(defaultUnitAmount: String) = - defaultUnitAmount(JsonField.of(defaultUnitAmount)) - - /** - * Default per unit rate for any usage not bucketed into a specified - * matrix_value - */ - @JsonProperty("default_unit_amount") - @ExcludeMissing - fun defaultUnitAmount(defaultUnitAmount: JsonField) = apply { + fun defaultUnitAmount(defaultUnitAmount: String) = apply { this.defaultUnitAmount = defaultUnitAmount } /** Matrix values for specified matrix grouping keys */ - fun matrixValues(matrixValues: List) = - matrixValues(JsonField.of(matrixValues)) - - /** Matrix values for specified matrix grouping keys */ - @JsonProperty("matrix_values") - @ExcludeMissing - fun matrixValues(matrixValues: JsonField>) = apply { + fun matrixValues(matrixValues: List) = apply { this.matrixValues = matrixValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixConfig = MatrixConfig( - dimensions.map { it.toImmutable() }, - defaultUnitAmount, - matrixValues.map { it.toImmutable() }, + checkNotNull(dimensions) { + "`dimensions` is required but was not set" + } + .toImmutable(), + checkNotNull(defaultUnitAmount) { + "`defaultUnitAmount` is required but was not set" + }, + checkNotNull(matrixValues) { + "`matrixValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = MatrixValue.Builder::class) @NoAutoDetect class MatrixValue + @JsonCreator private constructor( - private val unitAmount: JsonField, - private val dimensionValues: JsonField>, - private val additionalProperties: Map, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonProperty("dimension_values") + private val dimensionValues: List, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Unit price for the specified dimension_values */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - fun dimensionValues(): List = - dimensionValues.getRequired("dimension_values") - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount /** * One or two matrix keys to filter usage to this Matrix value by. For @@ -32899,21 +26477,12 @@ constructor( * cloud region and an instance tier. */ @JsonProperty("dimension_values") - @ExcludeMissing - fun _dimensionValues() = dimensionValues + fun dimensionValues(): List = dimensionValues @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): MatrixValue = apply { - if (!validated) { - unitAmount() - dimensionValues() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -32923,26 +26492,21 @@ constructor( class Builder { - private var unitAmount: JsonField = JsonMissing.of() - private var dimensionValues: JsonField> = JsonMissing.of() + private var unitAmount: String? = null + private var dimensionValues: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(matrixValue: MatrixValue) = apply { - this.unitAmount = matrixValue.unitAmount - this.dimensionValues = matrixValue.dimensionValues - additionalProperties(matrixValue.additionalProperties) + unitAmount = matrixValue.unitAmount + dimensionValues = matrixValue.dimensionValues.toMutableList() + additionalProperties = + matrixValue.additionalProperties.toMutableMap() } /** Unit price for the specified dimension_values */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Unit price for the specified dimension_values */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } @@ -32951,39 +26515,41 @@ constructor( * example, ["region", "tier"] could be used to filter cloud usage by a * cloud region and an instance tier. */ - fun dimensionValues(dimensionValues: List) = - dimensionValues(JsonField.of(dimensionValues)) - - /** - * One or two matrix keys to filter usage to this Matrix value by. For - * example, ["region", "tier"] could be used to filter cloud usage by a - * cloud region and an instance tier. - */ - @JsonProperty("dimension_values") - @ExcludeMissing - fun dimensionValues(dimensionValues: JsonField>) = apply { + fun dimensionValues(dimensionValues: List) = apply { this.dimensionValues = dimensionValues } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MatrixValue = MatrixValue( - unitAmount, - dimensionValues.map { it.toImmutable() }, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, + checkNotNull(dimensionValues) { + "`dimensionValues` is required but was not set" + } + .toImmutable(), additionalProperties.toImmutable(), ) } @@ -33080,43 +26646,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33126,57 +26675,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -33262,43 +26810,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33308,8 +26839,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -33317,49 +26848,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -33446,25 +26976,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33479,24 +27002,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -33535,230 +27065,120 @@ constructor( "NewSubscriptionMatrixPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, matrixConfig=$matrixConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_config") private val tieredConfig: TieredConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredConfig(): TieredConfig = tieredConfig.getRequired("tiered_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("tiered_config") @ExcludeMissing fun _tieredConfig() = tieredConfig + @JsonProperty("tiered_config") fun tieredConfig(): TieredConfig = tieredConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -33768,49 +27188,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredConfig: TieredConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionTieredPrice: NewSubscriptionTieredPrice) = apply { - this.metadata = newSubscriptionTieredPrice.metadata - this.externalPriceId = newSubscriptionTieredPrice.externalPriceId - this.name = newSubscriptionTieredPrice.name - this.billableMetricId = newSubscriptionTieredPrice.billableMetricId - this.itemId = newSubscriptionTieredPrice.itemId - this.billedInAdvance = newSubscriptionTieredPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionTieredPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionTieredPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredPrice.metadata + externalPriceId = newSubscriptionTieredPrice.externalPriceId + name = newSubscriptionTieredPrice.name + billableMetricId = newSubscriptionTieredPrice.billableMetricId + itemId = newSubscriptionTieredPrice.itemId + billedInAdvance = newSubscriptionTieredPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredPrice.invoiceGroupingKey + cadence = newSubscriptionTieredPrice.cadence + billingCycleConfiguration = newSubscriptionTieredPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredPrice.conversionRate - this.modelType = newSubscriptionTieredPrice.modelType - this.tieredConfig = newSubscriptionTieredPrice.tieredConfig - this.currency = newSubscriptionTieredPrice.currency - this.referenceId = newSubscriptionTieredPrice.referenceId - additionalProperties(newSubscriptionTieredPrice.additionalProperties) + conversionRate = newSubscriptionTieredPrice.conversionRate + modelType = newSubscriptionTieredPrice.modelType + tieredConfig = newSubscriptionTieredPrice.tieredConfig + currency = newSubscriptionTieredPrice.currency + referenceId = newSubscriptionTieredPrice.referenceId + additionalProperties = + newSubscriptionTieredPrice.additionalProperties.toMutableMap() } /** @@ -33818,75 +27236,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -33894,37 +27269,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -33932,16 +27287,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -33950,47 +27295,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredConfig(tieredConfig: TieredConfig) = - tieredConfig(JsonField.of(tieredConfig)) - - @JsonProperty("tiered_config") - @ExcludeMissing - fun tieredConfig(tieredConfig: JsonField) = apply { + fun tieredConfig(tieredConfig: TieredConfig) = apply { this.tieredConfig = tieredConfig } @@ -33998,40 +27314,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -34039,22 +27336,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredPrice = NewSubscriptionTieredPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredConfig) { + "`tieredConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -34195,33 +27502,22 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredConfig.Builder::class) @NoAutoDetect class TieredConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(): List = tiers.getRequired("tiers") - /** Tiers for rating based on total usage quantities into the specified tier */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34231,98 +27527,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredConfig: TieredConfig) = apply { - this.tiers = tieredConfig.tiers - additionalProperties(tieredConfig.additionalProperties) + tiers = tieredConfig.tiers.toMutableList() + additionalProperties = tieredConfig.additionalProperties.toMutableMap() } /** * Tiers for rating based on total usage quantities into the specified tier */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for rating based on total usage quantities into the specified tier - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredConfig = TieredConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val firstUnit: JsonField, - private val lastUnit: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("first_unit") private val firstUnit: Double, + @JsonProperty("last_unit") private val lastUnit: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Inclusive tier starting value */ - fun firstUnit(): Double = firstUnit.getRequired("first_unit") + @JsonProperty("first_unit") fun firstUnit(): Double = firstUnit /** * Exclusive tier ending value. If null, this is treated as the last tier */ - fun lastUnit(): Optional = - Optional.ofNullable(lastUnit.getNullable("last_unit")) + @JsonProperty("last_unit") + fun lastUnit(): Optional = Optional.ofNullable(lastUnit) /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - - /** Inclusive tier starting value */ - @JsonProperty("first_unit") @ExcludeMissing fun _firstUnit() = firstUnit - - /** - * Exclusive tier ending value. If null, this is treated as the last tier - */ - @JsonProperty("last_unit") @ExcludeMissing fun _lastUnit() = lastUnit - - /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - firstUnit() - lastUnit() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34332,77 +27609,65 @@ constructor( class Builder { - private var firstUnit: JsonField = JsonMissing.of() - private var lastUnit: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var firstUnit: Double? = null + private var lastUnit: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.firstUnit = tier.firstUnit - this.lastUnit = tier.lastUnit - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + firstUnit = tier.firstUnit + lastUnit = tier.lastUnit + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun firstUnit(firstUnit: Double) = firstUnit(JsonField.of(firstUnit)) - - /** Inclusive tier starting value */ - @JsonProperty("first_unit") - @ExcludeMissing - fun firstUnit(firstUnit: JsonField) = apply { - this.firstUnit = firstUnit - } + fun firstUnit(firstUnit: Double) = apply { this.firstUnit = firstUnit } /** * Exclusive tier ending value. If null, this is treated as the last * tier */ - fun lastUnit(lastUnit: Double) = lastUnit(JsonField.of(lastUnit)) - - /** - * Exclusive tier ending value. If null, this is treated as the last - * tier - */ - @JsonProperty("last_unit") - @ExcludeMissing - fun lastUnit(lastUnit: JsonField) = apply { - this.lastUnit = lastUnit - } - - /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) + fun lastUnit(lastUnit: Double) = apply { this.lastUnit = lastUnit } /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - firstUnit, + checkNotNull(firstUnit) { + "`firstUnit` is required but was not set" + }, lastUnit, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -34447,43 +27712,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34493,57 +27741,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -34629,43 +27876,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34675,8 +27905,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -34684,49 +27914,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -34813,25 +28042,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -34846,24 +28068,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -34902,233 +28131,121 @@ constructor( "NewSubscriptionTieredPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredConfig=$tieredConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredBpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_bps_config") private val tieredBpsConfig: TieredBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredBpsConfig(): TieredBpsConfig = - tieredBpsConfig.getRequired("tiered_bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun _tieredBpsConfig() = tieredBpsConfig + fun tieredBpsConfig(): TieredBpsConfig = tieredBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredBpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -35138,50 +28255,48 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredBpsConfig: TieredBpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredBpsPrice: NewSubscriptionTieredBpsPrice ) = apply { - this.metadata = newSubscriptionTieredBpsPrice.metadata - this.externalPriceId = newSubscriptionTieredBpsPrice.externalPriceId - this.name = newSubscriptionTieredBpsPrice.name - this.billableMetricId = newSubscriptionTieredBpsPrice.billableMetricId - this.itemId = newSubscriptionTieredBpsPrice.itemId - this.billedInAdvance = newSubscriptionTieredBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionTieredBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionTieredBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredBpsPrice.metadata + externalPriceId = newSubscriptionTieredBpsPrice.externalPriceId + name = newSubscriptionTieredBpsPrice.name + billableMetricId = newSubscriptionTieredBpsPrice.billableMetricId + itemId = newSubscriptionTieredBpsPrice.itemId + billedInAdvance = newSubscriptionTieredBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredBpsPrice.invoiceGroupingKey + cadence = newSubscriptionTieredBpsPrice.cadence + billingCycleConfiguration = newSubscriptionTieredBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredBpsPrice.conversionRate - this.modelType = newSubscriptionTieredBpsPrice.modelType - this.tieredBpsConfig = newSubscriptionTieredBpsPrice.tieredBpsConfig - this.currency = newSubscriptionTieredBpsPrice.currency - this.referenceId = newSubscriptionTieredBpsPrice.referenceId - additionalProperties(newSubscriptionTieredBpsPrice.additionalProperties) + conversionRate = newSubscriptionTieredBpsPrice.conversionRate + modelType = newSubscriptionTieredBpsPrice.modelType + tieredBpsConfig = newSubscriptionTieredBpsPrice.tieredBpsConfig + currency = newSubscriptionTieredBpsPrice.currency + referenceId = newSubscriptionTieredBpsPrice.referenceId + additionalProperties = + newSubscriptionTieredBpsPrice.additionalProperties.toMutableMap() } /** @@ -35189,75 +28304,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -35265,37 +28337,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -35303,16 +28355,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -35321,47 +28363,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = - tieredBpsConfig(JsonField.of(tieredBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("tiered_bps_config") - @ExcludeMissing - fun tieredBpsConfig(tieredBpsConfig: JsonField) = apply { + fun tieredBpsConfig(tieredBpsConfig: TieredBpsConfig) = apply { this.tieredBpsConfig = tieredBpsConfig } @@ -35369,40 +28382,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -35410,22 +28404,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredBpsPrice = NewSubscriptionTieredBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredBpsConfig) { + "`tieredBpsConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -35566,39 +28570,25 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredBpsConfig.Builder::class) @NoAutoDetect class TieredBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - fun tiers(): List = tiers.getRequired("tiers") - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -35608,111 +28598,84 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tieredBpsConfig: TieredBpsConfig) = apply { - this.tiers = tieredBpsConfig.tiers - additionalProperties(tieredBpsConfig.additionalProperties) + tiers = tieredBpsConfig.tiers.toMutableList() + additionalProperties = + tieredBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a Graduated BPS pricing model, where usage is bucketed into * specified tiers */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a Graduated BPS pricing model, where usage is bucketed into - * specified tiers - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredBpsConfig = TieredBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val minimumAmount: JsonField, - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("minimum_amount") private val minimumAmount: String, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Inclusive tier starting value */ - fun minimumAmount(): String = minimumAmount.getRequired("minimum_amount") - - /** Exclusive tier ending value */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Per-event basis point rate */ - fun bps(): Double = bps.getRequired("bps") - - /** Per unit maximum to charge */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun _minimumAmount() = minimumAmount + @JsonProperty("minimum_amount") fun minimumAmount(): String = minimumAmount /** Exclusive tier ending value */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Per-event basis point rate */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Per unit maximum to charge */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - minimumAmount() - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -35722,83 +28685,69 @@ constructor( class Builder { - private var minimumAmount: JsonField = JsonMissing.of() - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var minimumAmount: String? = null + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.minimumAmount = tier.minimumAmount - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + minimumAmount = tier.minimumAmount + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Inclusive tier starting value */ - fun minimumAmount(minimumAmount: String) = - minimumAmount(JsonField.of(minimumAmount)) - - /** Inclusive tier starting value */ - @JsonProperty("minimum_amount") - @ExcludeMissing - fun minimumAmount(minimumAmount: JsonField) = apply { + fun minimumAmount(minimumAmount: String) = apply { this.minimumAmount = minimumAmount } /** Exclusive tier ending value */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Exclusive tier ending value */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Per-event basis point rate */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Per-event basis point rate */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** Per unit maximum to charge */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) - - /** Per unit maximum to charge */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( - minimumAmount, + checkNotNull(minimumAmount) { + "`minimumAmount` is required but was not set" + }, maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -35844,43 +28793,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -35890,57 +28822,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -36026,43 +28957,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -36072,8 +28986,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -36081,49 +28995,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -36210,25 +29123,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -36243,24 +29149,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -36299,230 +29212,120 @@ constructor( "NewSubscriptionTieredBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredBpsConfig=$tieredBpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bps_config") private val bpsConfig: BpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bpsConfig(): BpsConfig = bpsConfig.getRequired("bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bps_config") @ExcludeMissing fun _bpsConfig() = bpsConfig + @JsonProperty("bps_config") fun bpsConfig(): BpsConfig = bpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -36532,48 +29335,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bpsConfig: BpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBpsPrice: NewSubscriptionBpsPrice) = apply { - this.metadata = newSubscriptionBpsPrice.metadata - this.externalPriceId = newSubscriptionBpsPrice.externalPriceId - this.name = newSubscriptionBpsPrice.name - this.billableMetricId = newSubscriptionBpsPrice.billableMetricId - this.itemId = newSubscriptionBpsPrice.itemId - this.billedInAdvance = newSubscriptionBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBpsPrice.metadata + externalPriceId = newSubscriptionBpsPrice.externalPriceId + name = newSubscriptionBpsPrice.name + billableMetricId = newSubscriptionBpsPrice.billableMetricId + itemId = newSubscriptionBpsPrice.itemId + billedInAdvance = newSubscriptionBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBpsPrice.invoiceGroupingKey + cadence = newSubscriptionBpsPrice.cadence + billingCycleConfiguration = newSubscriptionBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBpsPrice.conversionRate - this.modelType = newSubscriptionBpsPrice.modelType - this.bpsConfig = newSubscriptionBpsPrice.bpsConfig - this.currency = newSubscriptionBpsPrice.currency - this.referenceId = newSubscriptionBpsPrice.referenceId - additionalProperties(newSubscriptionBpsPrice.additionalProperties) + conversionRate = newSubscriptionBpsPrice.conversionRate + modelType = newSubscriptionBpsPrice.modelType + bpsConfig = newSubscriptionBpsPrice.bpsConfig + currency = newSubscriptionBpsPrice.currency + referenceId = newSubscriptionBpsPrice.referenceId + additionalProperties = + newSubscriptionBpsPrice.additionalProperties.toMutableMap() } /** @@ -36581,75 +29382,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -36657,37 +29415,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -36695,16 +29433,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -36713,87 +29441,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bpsConfig(bpsConfig: BpsConfig) = bpsConfig(JsonField.of(bpsConfig)) - - @JsonProperty("bps_config") - @ExcludeMissing - fun bpsConfig(bpsConfig: JsonField) = apply { - this.bpsConfig = bpsConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun bpsConfig(bpsConfig: BpsConfig) = apply { this.bpsConfig = bpsConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -36801,66 +29480,57 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBpsPrice = NewSubscriptionBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bpsConfig) { "`bpsConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BpsConfig.Builder::class) @NoAutoDetect class BpsConfig + @JsonCreator private constructor( - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** Basis point take rate per event */ - fun bps(): Double = bps.getRequired("bps") - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - - /** Basis point take rate per event */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** Optional currency amount maximum to cap spend per event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BpsConfig = apply { - if (!validated) { - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -36870,55 +29540,51 @@ constructor( class Builder { - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bpsConfig: BpsConfig) = apply { - this.bps = bpsConfig.bps - this.perUnitMaximum = bpsConfig.perUnitMaximum - additionalProperties(bpsConfig.additionalProperties) + bps = bpsConfig.bps + perUnitMaximum = bpsConfig.perUnitMaximum + additionalProperties = bpsConfig.additionalProperties.toMutableMap() } /** Basis point take rate per event */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis point take rate per event */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } - - /** Optional currency amount maximum to cap spend per event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) + fun bps(bps: Double) = apply { this.bps = bps } /** Optional currency amount maximum to cap spend per event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BpsConfig = BpsConfig( - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -37080,43 +29746,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -37126,57 +29775,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -37262,43 +29910,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -37308,8 +29939,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -37317,49 +29948,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -37446,25 +30076,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -37479,24 +30102,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -37535,232 +30165,120 @@ constructor( "NewSubscriptionBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bpsConfig=$bpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkBpsPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkBpsPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkBpsConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_bps_config") private val bulkBpsConfig: BulkBpsConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig.getRequired("bulk_bps_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun _bulkBpsConfig() = bulkBpsConfig + @JsonProperty("bulk_bps_config") fun bulkBpsConfig(): BulkBpsConfig = bulkBpsConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkBpsPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkBpsConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -37770,49 +30288,47 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkBpsConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkBpsConfig: BulkBpsConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBulkBpsPrice: NewSubscriptionBulkBpsPrice) = apply { - this.metadata = newSubscriptionBulkBpsPrice.metadata - this.externalPriceId = newSubscriptionBulkBpsPrice.externalPriceId - this.name = newSubscriptionBulkBpsPrice.name - this.billableMetricId = newSubscriptionBulkBpsPrice.billableMetricId - this.itemId = newSubscriptionBulkBpsPrice.itemId - this.billedInAdvance = newSubscriptionBulkBpsPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBulkBpsPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBulkBpsPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkBpsPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBulkBpsPrice.metadata + externalPriceId = newSubscriptionBulkBpsPrice.externalPriceId + name = newSubscriptionBulkBpsPrice.name + billableMetricId = newSubscriptionBulkBpsPrice.billableMetricId + itemId = newSubscriptionBulkBpsPrice.itemId + billedInAdvance = newSubscriptionBulkBpsPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkBpsPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBulkBpsPrice.invoiceGroupingKey + cadence = newSubscriptionBulkBpsPrice.cadence + billingCycleConfiguration = newSubscriptionBulkBpsPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkBpsPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkBpsPrice.conversionRate - this.modelType = newSubscriptionBulkBpsPrice.modelType - this.bulkBpsConfig = newSubscriptionBulkBpsPrice.bulkBpsConfig - this.currency = newSubscriptionBulkBpsPrice.currency - this.referenceId = newSubscriptionBulkBpsPrice.referenceId - additionalProperties(newSubscriptionBulkBpsPrice.additionalProperties) + conversionRate = newSubscriptionBulkBpsPrice.conversionRate + modelType = newSubscriptionBulkBpsPrice.modelType + bulkBpsConfig = newSubscriptionBulkBpsPrice.bulkBpsConfig + currency = newSubscriptionBulkBpsPrice.currency + referenceId = newSubscriptionBulkBpsPrice.referenceId + additionalProperties = + newSubscriptionBulkBpsPrice.additionalProperties.toMutableMap() } /** @@ -37820,75 +30336,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -37896,37 +30369,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -37934,16 +30387,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -37952,47 +30395,18 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = - bulkBpsConfig(JsonField.of(bulkBpsConfig)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("bulk_bps_config") - @ExcludeMissing - fun bulkBpsConfig(bulkBpsConfig: JsonField) = apply { + fun bulkBpsConfig(bulkBpsConfig: BulkBpsConfig) = apply { this.bulkBpsConfig = bulkBpsConfig } @@ -38000,40 +30414,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -38041,61 +30436,57 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkBpsPrice = NewSubscriptionBulkBpsPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkBpsConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkBpsConfig) { + "`bulkBpsConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkBpsConfig.Builder::class) @NoAutoDetect class BulkBpsConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a single - * tier based on total volume - */ - fun tiers(): List = tiers.getRequired("tiers") - /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a single * tier based on total volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkBpsConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38105,101 +30496,79 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkBpsConfig: BulkBpsConfig) = apply { - this.tiers = bulkBpsConfig.tiers - additionalProperties(bulkBpsConfig.additionalProperties) + tiers = bulkBpsConfig.tiers.toMutableList() + additionalProperties = bulkBpsConfig.additionalProperties.toMutableMap() } /** * Tiers for a bulk BPS pricing model where all usage is aggregated to a * single tier based on total volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** - * Tiers for a bulk BPS pricing model where all usage is aggregated to a - * single tier based on total volume - */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkBpsConfig = BulkBpsConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumAmount: JsonField, - private val bps: JsonField, - private val perUnitMaximum: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_amount") private val maximumAmount: String?, + @JsonProperty("bps") private val bps: Double, + @JsonProperty("per_unit_maximum") private val perUnitMaximum: String?, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for tier */ - fun maximumAmount(): Optional = - Optional.ofNullable(maximumAmount.getNullable("maximum_amount")) - - /** Basis points to rate on */ - fun bps(): Double = bps.getRequired("bps") - - /** The maximum amount to charge for any one event */ - fun perUnitMaximum(): Optional = - Optional.ofNullable(perUnitMaximum.getNullable("per_unit_maximum")) - /** Upper bound for tier */ @JsonProperty("maximum_amount") - @ExcludeMissing - fun _maximumAmount() = maximumAmount + fun maximumAmount(): Optional = Optional.ofNullable(maximumAmount) /** Basis points to rate on */ - @JsonProperty("bps") @ExcludeMissing fun _bps() = bps + @JsonProperty("bps") fun bps(): Double = bps /** The maximum amount to charge for any one event */ @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun _perUnitMaximum() = perUnitMaximum + fun perUnitMaximum(): Optional = Optional.ofNullable(perUnitMaximum) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumAmount() - bps() - perUnitMaximum() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38209,69 +30578,59 @@ constructor( class Builder { - private var maximumAmount: JsonField = JsonMissing.of() - private var bps: JsonField = JsonMissing.of() - private var perUnitMaximum: JsonField = JsonMissing.of() + private var maximumAmount: String? = null + private var bps: Double? = null + private var perUnitMaximum: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumAmount = tier.maximumAmount - this.bps = tier.bps - this.perUnitMaximum = tier.perUnitMaximum - additionalProperties(tier.additionalProperties) + maximumAmount = tier.maximumAmount + bps = tier.bps + perUnitMaximum = tier.perUnitMaximum + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for tier */ - fun maximumAmount(maximumAmount: String) = - maximumAmount(JsonField.of(maximumAmount)) - - /** Upper bound for tier */ - @JsonProperty("maximum_amount") - @ExcludeMissing - fun maximumAmount(maximumAmount: JsonField) = apply { + fun maximumAmount(maximumAmount: String) = apply { this.maximumAmount = maximumAmount } /** Basis points to rate on */ - fun bps(bps: Double) = bps(JsonField.of(bps)) - - /** Basis points to rate on */ - @JsonProperty("bps") - @ExcludeMissing - fun bps(bps: JsonField) = apply { this.bps = bps } + fun bps(bps: Double) = apply { this.bps = bps } /** The maximum amount to charge for any one event */ - fun perUnitMaximum(perUnitMaximum: String) = - perUnitMaximum(JsonField.of(perUnitMaximum)) - - /** The maximum amount to charge for any one event */ - @JsonProperty("per_unit_maximum") - @ExcludeMissing - fun perUnitMaximum(perUnitMaximum: JsonField) = apply { + fun perUnitMaximum(perUnitMaximum: String) = apply { this.perUnitMaximum = perUnitMaximum } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumAmount, - bps, + checkNotNull(bps) { "`bps` is required but was not set" }, perUnitMaximum, additionalProperties.toImmutable(), ) @@ -38451,43 +30810,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38497,57 +30839,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -38633,43 +30974,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38679,8 +31003,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -38688,49 +31012,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -38817,25 +31140,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -38850,24 +31166,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -38906,230 +31229,120 @@ constructor( "NewSubscriptionBulkBpsPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkBpsConfig=$bulkBpsConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_config") private val bulkConfig: BulkConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkConfig(): BulkConfig = bulkConfig.getRequired("bulk_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType - @JsonProperty("bulk_config") @ExcludeMissing fun _bulkConfig() = bulkConfig + @JsonProperty("bulk_config") fun bulkConfig(): BulkConfig = bulkConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -39139,48 +31352,46 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkConfig: JsonField = JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkConfig: BulkConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(newSubscriptionBulkPrice: NewSubscriptionBulkPrice) = apply { - this.metadata = newSubscriptionBulkPrice.metadata - this.externalPriceId = newSubscriptionBulkPrice.externalPriceId - this.name = newSubscriptionBulkPrice.name - this.billableMetricId = newSubscriptionBulkPrice.billableMetricId - this.itemId = newSubscriptionBulkPrice.itemId - this.billedInAdvance = newSubscriptionBulkPrice.billedInAdvance - this.fixedPriceQuantity = newSubscriptionBulkPrice.fixedPriceQuantity - this.invoiceGroupingKey = newSubscriptionBulkPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionBulkPrice.metadata + externalPriceId = newSubscriptionBulkPrice.externalPriceId + name = newSubscriptionBulkPrice.name + billableMetricId = newSubscriptionBulkPrice.billableMetricId + itemId = newSubscriptionBulkPrice.itemId + billedInAdvance = newSubscriptionBulkPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionBulkPrice.invoiceGroupingKey + cadence = newSubscriptionBulkPrice.cadence + billingCycleConfiguration = newSubscriptionBulkPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkPrice.conversionRate - this.modelType = newSubscriptionBulkPrice.modelType - this.bulkConfig = newSubscriptionBulkPrice.bulkConfig - this.currency = newSubscriptionBulkPrice.currency - this.referenceId = newSubscriptionBulkPrice.referenceId - additionalProperties(newSubscriptionBulkPrice.additionalProperties) + conversionRate = newSubscriptionBulkPrice.conversionRate + modelType = newSubscriptionBulkPrice.modelType + bulkConfig = newSubscriptionBulkPrice.bulkConfig + currency = newSubscriptionBulkPrice.currency + referenceId = newSubscriptionBulkPrice.referenceId + additionalProperties = + newSubscriptionBulkPrice.additionalProperties.toMutableMap() } /** @@ -39188,75 +31399,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -39264,37 +31432,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -39302,16 +31450,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -39320,87 +31458,38 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } - - fun bulkConfig(bulkConfig: BulkConfig) = bulkConfig(JsonField.of(bulkConfig)) - - @JsonProperty("bulk_config") - @ExcludeMissing - fun bulkConfig(bulkConfig: JsonField) = apply { - this.bulkConfig = bulkConfig - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + fun bulkConfig(bulkConfig: BulkConfig) = apply { this.bulkConfig = bulkConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -39408,55 +31497,52 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkPrice = NewSubscriptionBulkPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkConfig) { "`bulkConfig` is required but was not set" }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkConfig.Builder::class) @NoAutoDetect class BulkConfig + @JsonCreator private constructor( - private val tiers: JsonField>, - private val additionalProperties: Map, + @JsonProperty("tiers") private val tiers: List, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Bulk tiers for rating based on total usage volume */ - fun tiers(): List = tiers.getRequired("tiers") - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") @ExcludeMissing fun _tiers() = tiers + @JsonProperty("tiers") fun tiers(): List = tiers @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkConfig = apply { - if (!validated) { - tiers().forEach { it.validate() } - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -39466,84 +31552,71 @@ constructor( class Builder { - private var tiers: JsonField> = JsonMissing.of() + private var tiers: List? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(bulkConfig: BulkConfig) = apply { - this.tiers = bulkConfig.tiers - additionalProperties(bulkConfig.additionalProperties) + tiers = bulkConfig.tiers.toMutableList() + additionalProperties = bulkConfig.additionalProperties.toMutableMap() } /** Bulk tiers for rating based on total usage volume */ - fun tiers(tiers: List) = tiers(JsonField.of(tiers)) - - /** Bulk tiers for rating based on total usage volume */ - @JsonProperty("tiers") - @ExcludeMissing - fun tiers(tiers: JsonField>) = apply { this.tiers = tiers } + fun tiers(tiers: List) = apply { this.tiers = tiers } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkConfig = BulkConfig( - tiers.map { it.toImmutable() }, + checkNotNull(tiers) { "`tiers` is required but was not set" } + .toImmutable(), additionalProperties.toImmutable() ) } - @JsonDeserialize(builder = Tier.Builder::class) @NoAutoDetect class Tier + @JsonCreator private constructor( - private val maximumUnits: JsonField, - private val unitAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("maximum_units") private val maximumUnits: Double?, + @JsonProperty("unit_amount") private val unitAmount: String, + @JsonAnySetter + private val additionalProperties: Map = + immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** Upper bound for this tier */ - fun maximumUnits(): Optional = - Optional.ofNullable(maximumUnits.getNullable("maximum_units")) - - /** Amount per unit */ - fun unitAmount(): String = unitAmount.getRequired("unit_amount") - /** Upper bound for this tier */ @JsonProperty("maximum_units") - @ExcludeMissing - fun _maximumUnits() = maximumUnits + fun maximumUnits(): Optional = Optional.ofNullable(maximumUnits) /** Amount per unit */ - @JsonProperty("unit_amount") @ExcludeMissing fun _unitAmount() = unitAmount + @JsonProperty("unit_amount") fun unitAmount(): String = unitAmount @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Tier = apply { - if (!validated) { - maximumUnits() - unitAmount() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -39553,59 +31626,56 @@ constructor( class Builder { - private var maximumUnits: JsonField = JsonMissing.of() - private var unitAmount: JsonField = JsonMissing.of() + private var maximumUnits: Double? = null + private var unitAmount: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(tier: Tier) = apply { - this.maximumUnits = tier.maximumUnits - this.unitAmount = tier.unitAmount - additionalProperties(tier.additionalProperties) + maximumUnits = tier.maximumUnits + unitAmount = tier.unitAmount + additionalProperties = tier.additionalProperties.toMutableMap() } /** Upper bound for this tier */ - fun maximumUnits(maximumUnits: Double) = - maximumUnits(JsonField.of(maximumUnits)) - - /** Upper bound for this tier */ - @JsonProperty("maximum_units") - @ExcludeMissing - fun maximumUnits(maximumUnits: JsonField) = apply { + fun maximumUnits(maximumUnits: Double) = apply { this.maximumUnits = maximumUnits } /** Amount per unit */ - fun unitAmount(unitAmount: String) = - unitAmount(JsonField.of(unitAmount)) - - /** Amount per unit */ - @JsonProperty("unit_amount") - @ExcludeMissing - fun unitAmount(unitAmount: JsonField) = apply { + fun unitAmount(unitAmount: String) = apply { this.unitAmount = unitAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Tier = Tier( maximumUnits, - unitAmount, + checkNotNull(unitAmount) { + "`unitAmount` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -39784,43 +31854,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -39830,57 +31883,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -39966,43 +32018,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -40012,8 +32047,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -40021,49 +32056,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -40150,25 +32184,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -40183,24 +32210,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -40239,233 +32273,123 @@ constructor( "NewSubscriptionBulkPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, bulkConfig=$bulkConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionThresholdTotalAmountPrice.Builder::class) @NoAutoDetect class NewSubscriptionThresholdTotalAmountPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val thresholdTotalAmountConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("threshold_total_amount_config") + private val thresholdTotalAmountConfig: ThresholdTotalAmountConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = - thresholdTotalAmountConfig.getRequired("threshold_total_amount_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun _thresholdTotalAmountConfig() = thresholdTotalAmountConfig + fun thresholdTotalAmountConfig(): ThresholdTotalAmountConfig = + thresholdTotalAmountConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionThresholdTotalAmountPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - thresholdTotalAmountConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -40475,26 +32399,22 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var thresholdTotalAmountConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var thresholdTotalAmountConfig: ThresholdTotalAmountConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -40502,34 +32422,30 @@ constructor( newSubscriptionThresholdTotalAmountPrice: NewSubscriptionThresholdTotalAmountPrice ) = apply { - this.metadata = newSubscriptionThresholdTotalAmountPrice.metadata - this.externalPriceId = - newSubscriptionThresholdTotalAmountPrice.externalPriceId - this.name = newSubscriptionThresholdTotalAmountPrice.name - this.billableMetricId = - newSubscriptionThresholdTotalAmountPrice.billableMetricId - this.itemId = newSubscriptionThresholdTotalAmountPrice.itemId - this.billedInAdvance = - newSubscriptionThresholdTotalAmountPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionThresholdTotalAmountPrice.metadata + externalPriceId = newSubscriptionThresholdTotalAmountPrice.externalPriceId + name = newSubscriptionThresholdTotalAmountPrice.name + billableMetricId = newSubscriptionThresholdTotalAmountPrice.billableMetricId + itemId = newSubscriptionThresholdTotalAmountPrice.itemId + billedInAdvance = newSubscriptionThresholdTotalAmountPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionThresholdTotalAmountPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionThresholdTotalAmountPrice.invoiceGroupingKey - this.cadence = newSubscriptionThresholdTotalAmountPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionThresholdTotalAmountPrice.cadence + billingCycleConfiguration = newSubscriptionThresholdTotalAmountPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionThresholdTotalAmountPrice.invoicingCycleConfiguration - this.conversionRate = - newSubscriptionThresholdTotalAmountPrice.conversionRate - this.modelType = newSubscriptionThresholdTotalAmountPrice.modelType - this.thresholdTotalAmountConfig = + conversionRate = newSubscriptionThresholdTotalAmountPrice.conversionRate + modelType = newSubscriptionThresholdTotalAmountPrice.modelType + thresholdTotalAmountConfig = newSubscriptionThresholdTotalAmountPrice.thresholdTotalAmountConfig - this.currency = newSubscriptionThresholdTotalAmountPrice.currency - this.referenceId = newSubscriptionThresholdTotalAmountPrice.referenceId - additionalProperties( + currency = newSubscriptionThresholdTotalAmountPrice.currency + referenceId = newSubscriptionThresholdTotalAmountPrice.referenceId + additionalProperties = newSubscriptionThresholdTotalAmountPrice.additionalProperties - ) + .toMutableMap() } /** @@ -40537,75 +32453,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -40613,37 +32486,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -40651,16 +32504,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -40669,89 +32512,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun thresholdTotalAmountConfig( thresholdTotalAmountConfig: ThresholdTotalAmountConfig - ) = thresholdTotalAmountConfig(JsonField.of(thresholdTotalAmountConfig)) - - @JsonProperty("threshold_total_amount_config") - @ExcludeMissing - fun thresholdTotalAmountConfig( - thresholdTotalAmountConfig: JsonField ) = apply { this.thresholdTotalAmountConfig = thresholdTotalAmountConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -40759,22 +32553,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionThresholdTotalAmountPrice = NewSubscriptionThresholdTotalAmountPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - thresholdTotalAmountConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(thresholdTotalAmountConfig) { + "`thresholdTotalAmountConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -40915,25 +32719,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = ThresholdTotalAmountConfig.Builder::class) @NoAutoDetect class ThresholdTotalAmountConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): ThresholdTotalAmountConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -40949,26 +32746,32 @@ constructor( @JvmSynthetic internal fun from(thresholdTotalAmountConfig: ThresholdTotalAmountConfig) = apply { - additionalProperties( - thresholdTotalAmountConfig.additionalProperties - ) + additionalProperties = + thresholdTotalAmountConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): ThresholdTotalAmountConfig = ThresholdTotalAmountConfig(additionalProperties.toImmutable()) } @@ -40995,43 +32798,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -41041,57 +32827,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -41177,43 +32962,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -41223,8 +32991,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -41232,49 +33000,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -41361,25 +33128,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -41394,24 +33154,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -41450,233 +33217,122 @@ constructor( "NewSubscriptionThresholdTotalAmountPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, thresholdTotalAmountConfig=$thresholdTotalAmountConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredPackagePrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredPackagePrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredPackageConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_package_config") + private val tieredPackageConfig: TieredPackageConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredPackageConfig(): TieredPackageConfig = - tieredPackageConfig.getRequired("tiered_package_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_package_config") - @ExcludeMissing - fun _tieredPackageConfig() = tieredPackageConfig + fun tieredPackageConfig(): TieredPackageConfig = tieredPackageConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredPackagePrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredPackageConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -41686,54 +33342,48 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredPackageConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredPackageConfig: TieredPackageConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredPackagePrice: NewSubscriptionTieredPackagePrice ) = apply { - this.metadata = newSubscriptionTieredPackagePrice.metadata - this.externalPriceId = newSubscriptionTieredPackagePrice.externalPriceId - this.name = newSubscriptionTieredPackagePrice.name - this.billableMetricId = newSubscriptionTieredPackagePrice.billableMetricId - this.itemId = newSubscriptionTieredPackagePrice.itemId - this.billedInAdvance = newSubscriptionTieredPackagePrice.billedInAdvance - this.fixedPriceQuantity = - newSubscriptionTieredPackagePrice.fixedPriceQuantity - this.invoiceGroupingKey = - newSubscriptionTieredPackagePrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredPackagePrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionTieredPackagePrice.metadata + externalPriceId = newSubscriptionTieredPackagePrice.externalPriceId + name = newSubscriptionTieredPackagePrice.name + billableMetricId = newSubscriptionTieredPackagePrice.billableMetricId + itemId = newSubscriptionTieredPackagePrice.itemId + billedInAdvance = newSubscriptionTieredPackagePrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredPackagePrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionTieredPackagePrice.invoiceGroupingKey + cadence = newSubscriptionTieredPackagePrice.cadence + billingCycleConfiguration = newSubscriptionTieredPackagePrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredPackagePrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredPackagePrice.conversionRate - this.modelType = newSubscriptionTieredPackagePrice.modelType - this.tieredPackageConfig = - newSubscriptionTieredPackagePrice.tieredPackageConfig - this.currency = newSubscriptionTieredPackagePrice.currency - this.referenceId = newSubscriptionTieredPackagePrice.referenceId - additionalProperties(newSubscriptionTieredPackagePrice.additionalProperties) + conversionRate = newSubscriptionTieredPackagePrice.conversionRate + modelType = newSubscriptionTieredPackagePrice.modelType + tieredPackageConfig = newSubscriptionTieredPackagePrice.tieredPackageConfig + currency = newSubscriptionTieredPackagePrice.currency + referenceId = newSubscriptionTieredPackagePrice.referenceId + additionalProperties = + newSubscriptionTieredPackagePrice.additionalProperties.toMutableMap() } /** @@ -41741,75 +33391,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -41817,37 +33424,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -41855,16 +33442,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -41873,89 +33450,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType + fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = apply { + this.tieredPackageConfig = tieredPackageConfig } - fun tieredPackageConfig(tieredPackageConfig: TieredPackageConfig) = - tieredPackageConfig(JsonField.of(tieredPackageConfig)) - - @JsonProperty("tiered_package_config") - @ExcludeMissing - fun tieredPackageConfig(tieredPackageConfig: JsonField) = - apply { - this.tieredPackageConfig = tieredPackageConfig - } - /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -41963,22 +33491,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredPackagePrice = NewSubscriptionTieredPackagePrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredPackageConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredPackageConfig) { + "`tieredPackageConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -42119,25 +33657,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredPackageConfig.Builder::class) @NoAutoDetect class TieredPackageConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredPackageConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42152,24 +33683,32 @@ constructor( @JvmSynthetic internal fun from(tieredPackageConfig: TieredPackageConfig) = apply { - additionalProperties(tieredPackageConfig.additionalProperties) + additionalProperties = + tieredPackageConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredPackageConfig = TieredPackageConfig(additionalProperties.toImmutable()) } @@ -42196,43 +33735,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42242,57 +33764,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -42378,43 +33899,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42424,8 +33928,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -42433,49 +33937,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -42562,25 +34065,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42595,24 +34091,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -42651,233 +34154,122 @@ constructor( "NewSubscriptionTieredPackagePrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredPackageConfig=$tieredPackageConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTieredWithMinimumPrice.Builder::class) @NoAutoDetect class NewSubscriptionTieredWithMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithMinimumConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_minimum_config") + private val tieredWithMinimumConfig: TieredWithMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithMinimumConfig(): TieredWithMinimumConfig = - tieredWithMinimumConfig.getRequired("tiered_with_minimum_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun _tieredWithMinimumConfig() = tieredWithMinimumConfig + fun tieredWithMinimumConfig(): TieredWithMinimumConfig = tieredWithMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTieredWithMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithMinimumConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -42887,57 +34279,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithMinimumConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithMinimumConfig: TieredWithMinimumConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTieredWithMinimumPrice: NewSubscriptionTieredWithMinimumPrice ) = apply { - this.metadata = newSubscriptionTieredWithMinimumPrice.metadata - this.externalPriceId = newSubscriptionTieredWithMinimumPrice.externalPriceId - this.name = newSubscriptionTieredWithMinimumPrice.name - this.billableMetricId = - newSubscriptionTieredWithMinimumPrice.billableMetricId - this.itemId = newSubscriptionTieredWithMinimumPrice.itemId - this.billedInAdvance = newSubscriptionTieredWithMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionTieredWithMinimumPrice.metadata + externalPriceId = newSubscriptionTieredWithMinimumPrice.externalPriceId + name = newSubscriptionTieredWithMinimumPrice.name + billableMetricId = newSubscriptionTieredWithMinimumPrice.billableMetricId + itemId = newSubscriptionTieredWithMinimumPrice.itemId + billedInAdvance = newSubscriptionTieredWithMinimumPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTieredWithMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionTieredWithMinimumPrice.invoiceGroupingKey - this.cadence = newSubscriptionTieredWithMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionTieredWithMinimumPrice.cadence + billingCycleConfiguration = newSubscriptionTieredWithMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTieredWithMinimumPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTieredWithMinimumPrice.conversionRate - this.modelType = newSubscriptionTieredWithMinimumPrice.modelType - this.tieredWithMinimumConfig = + conversionRate = newSubscriptionTieredWithMinimumPrice.conversionRate + modelType = newSubscriptionTieredWithMinimumPrice.modelType + tieredWithMinimumConfig = newSubscriptionTieredWithMinimumPrice.tieredWithMinimumConfig - this.currency = newSubscriptionTieredWithMinimumPrice.currency - this.referenceId = newSubscriptionTieredWithMinimumPrice.referenceId - additionalProperties( + currency = newSubscriptionTieredWithMinimumPrice.currency + referenceId = newSubscriptionTieredWithMinimumPrice.referenceId + additionalProperties = newSubscriptionTieredWithMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -42945,75 +34332,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -43021,37 +34365,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -43059,16 +34383,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -43077,88 +34391,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithMinimumConfig(tieredWithMinimumConfig: TieredWithMinimumConfig) = - tieredWithMinimumConfig(JsonField.of(tieredWithMinimumConfig)) - - @JsonProperty("tiered_with_minimum_config") - @ExcludeMissing - fun tieredWithMinimumConfig( - tieredWithMinimumConfig: JsonField - ) = apply { this.tieredWithMinimumConfig = tieredWithMinimumConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.tieredWithMinimumConfig = tieredWithMinimumConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -43166,22 +34433,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTieredWithMinimumPrice = NewSubscriptionTieredWithMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithMinimumConfig) { + "`tieredWithMinimumConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -43322,25 +34599,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithMinimumConfig.Builder::class) @NoAutoDetect class TieredWithMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -43356,24 +34626,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithMinimumConfig: TieredWithMinimumConfig) = apply { - additionalProperties(tieredWithMinimumConfig.additionalProperties) + additionalProperties = + tieredWithMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithMinimumConfig = TieredWithMinimumConfig(additionalProperties.toImmutable()) } @@ -43400,43 +34678,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -43446,57 +34707,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -43582,43 +34842,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -43628,8 +34871,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -43637,49 +34880,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -43766,25 +35008,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -43799,24 +35034,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -43855,233 +35097,122 @@ constructor( "NewSubscriptionTieredWithMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithMinimumConfig=$tieredWithMinimumConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionUnitWithPercentPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitWithPercentPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithPercentConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_percent_config") + private val unitWithPercentConfig: UnitWithPercentConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithPercentConfig(): UnitWithPercentConfig = - unitWithPercentConfig.getRequired("unit_with_percent_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun _unitWithPercentConfig() = unitWithPercentConfig + fun unitWithPercentConfig(): UnitWithPercentConfig = unitWithPercentConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitWithPercentPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithPercentConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -44091,56 +35222,49 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithPercentConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithPercentConfig: UnitWithPercentConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionUnitWithPercentPrice: NewSubscriptionUnitWithPercentPrice ) = apply { - this.metadata = newSubscriptionUnitWithPercentPrice.metadata - this.externalPriceId = newSubscriptionUnitWithPercentPrice.externalPriceId - this.name = newSubscriptionUnitWithPercentPrice.name - this.billableMetricId = newSubscriptionUnitWithPercentPrice.billableMetricId - this.itemId = newSubscriptionUnitWithPercentPrice.itemId - this.billedInAdvance = newSubscriptionUnitWithPercentPrice.billedInAdvance - this.fixedPriceQuantity = - newSubscriptionUnitWithPercentPrice.fixedPriceQuantity - this.invoiceGroupingKey = - newSubscriptionUnitWithPercentPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitWithPercentPrice.cadence - this.billingCycleConfiguration = + metadata = newSubscriptionUnitWithPercentPrice.metadata + externalPriceId = newSubscriptionUnitWithPercentPrice.externalPriceId + name = newSubscriptionUnitWithPercentPrice.name + billableMetricId = newSubscriptionUnitWithPercentPrice.billableMetricId + itemId = newSubscriptionUnitWithPercentPrice.itemId + billedInAdvance = newSubscriptionUnitWithPercentPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitWithPercentPrice.fixedPriceQuantity + invoiceGroupingKey = newSubscriptionUnitWithPercentPrice.invoiceGroupingKey + cadence = newSubscriptionUnitWithPercentPrice.cadence + billingCycleConfiguration = newSubscriptionUnitWithPercentPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitWithPercentPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitWithPercentPrice.conversionRate - this.modelType = newSubscriptionUnitWithPercentPrice.modelType - this.unitWithPercentConfig = + conversionRate = newSubscriptionUnitWithPercentPrice.conversionRate + modelType = newSubscriptionUnitWithPercentPrice.modelType + unitWithPercentConfig = newSubscriptionUnitWithPercentPrice.unitWithPercentConfig - this.currency = newSubscriptionUnitWithPercentPrice.currency - this.referenceId = newSubscriptionUnitWithPercentPrice.referenceId - additionalProperties( - newSubscriptionUnitWithPercentPrice.additionalProperties - ) + currency = newSubscriptionUnitWithPercentPrice.currency + referenceId = newSubscriptionUnitWithPercentPrice.referenceId + additionalProperties = + newSubscriptionUnitWithPercentPrice.additionalProperties.toMutableMap() } /** @@ -44148,75 +35272,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -44224,37 +35305,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -44262,16 +35323,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -44280,88 +35331,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithPercentConfig(unitWithPercentConfig: UnitWithPercentConfig) = - unitWithPercentConfig(JsonField.of(unitWithPercentConfig)) - - @JsonProperty("unit_with_percent_config") - @ExcludeMissing - fun unitWithPercentConfig( - unitWithPercentConfig: JsonField - ) = apply { this.unitWithPercentConfig = unitWithPercentConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithPercentConfig = unitWithPercentConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -44369,22 +35373,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitWithPercentPrice = NewSubscriptionUnitWithPercentPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithPercentConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithPercentConfig) { + "`unitWithPercentConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -44525,25 +35539,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithPercentConfig.Builder::class) @NoAutoDetect class UnitWithPercentConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithPercentConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -44558,24 +35565,32 @@ constructor( @JvmSynthetic internal fun from(unitWithPercentConfig: UnitWithPercentConfig) = apply { - additionalProperties(unitWithPercentConfig.additionalProperties) + additionalProperties = + unitWithPercentConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithPercentConfig = UnitWithPercentConfig(additionalProperties.toImmutable()) } @@ -44602,43 +35617,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -44648,57 +35646,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -44784,43 +35781,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -44830,8 +35810,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -44839,49 +35819,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -44968,25 +35947,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -45001,24 +35973,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -45057,233 +36036,123 @@ constructor( "NewSubscriptionUnitWithPercentPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithPercentConfig=$unitWithPercentConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionPackageWithAllocationPrice.Builder::class) @NoAutoDetect class NewSubscriptionPackageWithAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val packageWithAllocationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("package_with_allocation_config") + private val packageWithAllocationConfig: PackageWithAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun packageWithAllocationConfig(): PackageWithAllocationConfig = - packageWithAllocationConfig.getRequired("package_with_allocation_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun _packageWithAllocationConfig() = packageWithAllocationConfig + fun packageWithAllocationConfig(): PackageWithAllocationConfig = + packageWithAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionPackageWithAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - packageWithAllocationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -45293,27 +36162,22 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var packageWithAllocationConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var packageWithAllocationConfig: PackageWithAllocationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -45321,34 +36185,31 @@ constructor( newSubscriptionPackageWithAllocationPrice: NewSubscriptionPackageWithAllocationPrice ) = apply { - this.metadata = newSubscriptionPackageWithAllocationPrice.metadata - this.externalPriceId = - newSubscriptionPackageWithAllocationPrice.externalPriceId - this.name = newSubscriptionPackageWithAllocationPrice.name - this.billableMetricId = + metadata = newSubscriptionPackageWithAllocationPrice.metadata + externalPriceId = newSubscriptionPackageWithAllocationPrice.externalPriceId + name = newSubscriptionPackageWithAllocationPrice.name + billableMetricId = newSubscriptionPackageWithAllocationPrice.billableMetricId - this.itemId = newSubscriptionPackageWithAllocationPrice.itemId - this.billedInAdvance = - newSubscriptionPackageWithAllocationPrice.billedInAdvance - this.fixedPriceQuantity = + itemId = newSubscriptionPackageWithAllocationPrice.itemId + billedInAdvance = newSubscriptionPackageWithAllocationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionPackageWithAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionPackageWithAllocationPrice.invoiceGroupingKey - this.cadence = newSubscriptionPackageWithAllocationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionPackageWithAllocationPrice.cadence + billingCycleConfiguration = newSubscriptionPackageWithAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionPackageWithAllocationPrice.invoicingCycleConfiguration - this.conversionRate = - newSubscriptionPackageWithAllocationPrice.conversionRate - this.modelType = newSubscriptionPackageWithAllocationPrice.modelType - this.packageWithAllocationConfig = + conversionRate = newSubscriptionPackageWithAllocationPrice.conversionRate + modelType = newSubscriptionPackageWithAllocationPrice.modelType + packageWithAllocationConfig = newSubscriptionPackageWithAllocationPrice.packageWithAllocationConfig - this.currency = newSubscriptionPackageWithAllocationPrice.currency - this.referenceId = newSubscriptionPackageWithAllocationPrice.referenceId - additionalProperties( + currency = newSubscriptionPackageWithAllocationPrice.currency + referenceId = newSubscriptionPackageWithAllocationPrice.referenceId + additionalProperties = newSubscriptionPackageWithAllocationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -45356,75 +36217,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -45432,37 +36250,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -45470,16 +36268,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -45488,89 +36276,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun packageWithAllocationConfig( packageWithAllocationConfig: PackageWithAllocationConfig - ) = packageWithAllocationConfig(JsonField.of(packageWithAllocationConfig)) - - @JsonProperty("package_with_allocation_config") - @ExcludeMissing - fun packageWithAllocationConfig( - packageWithAllocationConfig: JsonField ) = apply { this.packageWithAllocationConfig = packageWithAllocationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -45578,22 +36317,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionPackageWithAllocationPrice = NewSubscriptionPackageWithAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - packageWithAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(packageWithAllocationConfig) { + "`packageWithAllocationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -45734,25 +36483,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = PackageWithAllocationConfig.Builder::class) @NoAutoDetect class PackageWithAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): PackageWithAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -45769,24 +36511,32 @@ constructor( internal fun from( packageWithAllocationConfig: PackageWithAllocationConfig ) = apply { - additionalProperties(packageWithAllocationConfig.additionalProperties) + additionalProperties = + packageWithAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PackageWithAllocationConfig = PackageWithAllocationConfig(additionalProperties.toImmutable()) } @@ -45813,43 +36563,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -45859,57 +36592,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -45995,43 +36727,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -46041,8 +36756,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -46050,49 +36765,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -46179,25 +36893,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -46212,24 +36919,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -46268,233 +36982,123 @@ constructor( "NewSubscriptionPackageWithAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, packageWithAllocationConfig=$packageWithAllocationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionTierWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionTierWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val tieredWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("tiered_with_proration_config") + private val tieredWithProrationConfig: TieredWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun tieredWithProrationConfig(): TieredWithProrationConfig = - tieredWithProrationConfig.getRequired("tiered_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun _tieredWithProrationConfig() = tieredWithProrationConfig + fun tieredWithProrationConfig(): TieredWithProrationConfig = + tieredWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionTierWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - tieredWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -46504,57 +37108,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var tieredWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var tieredWithProrationConfig: TieredWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionTierWithProrationPrice: NewSubscriptionTierWithProrationPrice ) = apply { - this.metadata = newSubscriptionTierWithProrationPrice.metadata - this.externalPriceId = newSubscriptionTierWithProrationPrice.externalPriceId - this.name = newSubscriptionTierWithProrationPrice.name - this.billableMetricId = - newSubscriptionTierWithProrationPrice.billableMetricId - this.itemId = newSubscriptionTierWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionTierWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionTierWithProrationPrice.metadata + externalPriceId = newSubscriptionTierWithProrationPrice.externalPriceId + name = newSubscriptionTierWithProrationPrice.name + billableMetricId = newSubscriptionTierWithProrationPrice.billableMetricId + itemId = newSubscriptionTierWithProrationPrice.itemId + billedInAdvance = newSubscriptionTierWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionTierWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionTierWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionTierWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionTierWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionTierWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionTierWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionTierWithProrationPrice.conversionRate - this.modelType = newSubscriptionTierWithProrationPrice.modelType - this.tieredWithProrationConfig = + conversionRate = newSubscriptionTierWithProrationPrice.conversionRate + modelType = newSubscriptionTierWithProrationPrice.modelType + tieredWithProrationConfig = newSubscriptionTierWithProrationPrice.tieredWithProrationConfig - this.currency = newSubscriptionTierWithProrationPrice.currency - this.referenceId = newSubscriptionTierWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionTierWithProrationPrice.currency + referenceId = newSubscriptionTierWithProrationPrice.referenceId + additionalProperties = newSubscriptionTierWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -46562,75 +37161,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -46638,37 +37194,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -46676,16 +37212,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -46694,89 +37220,40 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun tieredWithProrationConfig( tieredWithProrationConfig: TieredWithProrationConfig - ) = tieredWithProrationConfig(JsonField.of(tieredWithProrationConfig)) - - @JsonProperty("tiered_with_proration_config") - @ExcludeMissing - fun tieredWithProrationConfig( - tieredWithProrationConfig: JsonField ) = apply { this.tieredWithProrationConfig = tieredWithProrationConfig } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -46784,22 +37261,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionTierWithProrationPrice = NewSubscriptionTierWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - tieredWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(tieredWithProrationConfig) { + "`tieredWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -46940,25 +37427,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TieredWithProrationConfig.Builder::class) @NoAutoDetect class TieredWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): TieredWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -46974,24 +37454,32 @@ constructor( @JvmSynthetic internal fun from(tieredWithProrationConfig: TieredWithProrationConfig) = apply { - additionalProperties(tieredWithProrationConfig.additionalProperties) + additionalProperties = + tieredWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TieredWithProrationConfig = TieredWithProrationConfig(additionalProperties.toImmutable()) } @@ -47018,43 +37506,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -47064,57 +37535,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -47200,43 +37670,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -47246,8 +37699,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -47255,49 +37708,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -47384,25 +37836,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -47417,24 +37862,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -47473,233 +37925,122 @@ constructor( "NewSubscriptionTierWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, tieredWithProrationConfig=$tieredWithProrationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionUnitWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionUnitWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val unitWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("unit_with_proration_config") + private val unitWithProrationConfig: UnitWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun unitWithProrationConfig(): UnitWithProrationConfig = - unitWithProrationConfig.getRequired("unit_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun _unitWithProrationConfig() = unitWithProrationConfig + fun unitWithProrationConfig(): UnitWithProrationConfig = unitWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionUnitWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - unitWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -47709,57 +38050,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var unitWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var unitWithProrationConfig: UnitWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionUnitWithProrationPrice: NewSubscriptionUnitWithProrationPrice ) = apply { - this.metadata = newSubscriptionUnitWithProrationPrice.metadata - this.externalPriceId = newSubscriptionUnitWithProrationPrice.externalPriceId - this.name = newSubscriptionUnitWithProrationPrice.name - this.billableMetricId = - newSubscriptionUnitWithProrationPrice.billableMetricId - this.itemId = newSubscriptionUnitWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionUnitWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionUnitWithProrationPrice.metadata + externalPriceId = newSubscriptionUnitWithProrationPrice.externalPriceId + name = newSubscriptionUnitWithProrationPrice.name + billableMetricId = newSubscriptionUnitWithProrationPrice.billableMetricId + itemId = newSubscriptionUnitWithProrationPrice.itemId + billedInAdvance = newSubscriptionUnitWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionUnitWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionUnitWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionUnitWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionUnitWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionUnitWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionUnitWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionUnitWithProrationPrice.conversionRate - this.modelType = newSubscriptionUnitWithProrationPrice.modelType - this.unitWithProrationConfig = + conversionRate = newSubscriptionUnitWithProrationPrice.conversionRate + modelType = newSubscriptionUnitWithProrationPrice.modelType + unitWithProrationConfig = newSubscriptionUnitWithProrationPrice.unitWithProrationConfig - this.currency = newSubscriptionUnitWithProrationPrice.currency - this.referenceId = newSubscriptionUnitWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionUnitWithProrationPrice.currency + referenceId = newSubscriptionUnitWithProrationPrice.referenceId + additionalProperties = newSubscriptionUnitWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -47767,75 +38103,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -47843,37 +38136,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -47881,16 +38154,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -47899,88 +38162,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun unitWithProrationConfig(unitWithProrationConfig: UnitWithProrationConfig) = - unitWithProrationConfig(JsonField.of(unitWithProrationConfig)) - - @JsonProperty("unit_with_proration_config") - @ExcludeMissing - fun unitWithProrationConfig( - unitWithProrationConfig: JsonField - ) = apply { this.unitWithProrationConfig = unitWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.unitWithProrationConfig = unitWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -47988,22 +38204,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionUnitWithProrationPrice = NewSubscriptionUnitWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - unitWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(unitWithProrationConfig) { + "`unitWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -48144,25 +38370,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = UnitWithProrationConfig.Builder::class) @NoAutoDetect class UnitWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): UnitWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48178,24 +38397,32 @@ constructor( @JvmSynthetic internal fun from(unitWithProrationConfig: UnitWithProrationConfig) = apply { - additionalProperties(unitWithProrationConfig.additionalProperties) + additionalProperties = + unitWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UnitWithProrationConfig = UnitWithProrationConfig(additionalProperties.toImmutable()) } @@ -48222,43 +38449,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48268,57 +38478,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -48404,43 +38613,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48450,8 +38642,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -48459,49 +38651,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -48588,25 +38779,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48621,24 +38805,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -48677,233 +38868,122 @@ constructor( "NewSubscriptionUnitWithProrationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, unitWithProrationConfig=$unitWithProrationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionGroupedAllocationPrice.Builder::class) @NoAutoDetect class NewSubscriptionGroupedAllocationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedAllocationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_allocation_config") + private val groupedAllocationConfig: GroupedAllocationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedAllocationConfig(): GroupedAllocationConfig = - groupedAllocationConfig.getRequired("grouped_allocation_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun _groupedAllocationConfig() = groupedAllocationConfig + fun groupedAllocationConfig(): GroupedAllocationConfig = groupedAllocationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionGroupedAllocationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedAllocationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -48913,57 +38993,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var groupedAllocationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var groupedAllocationConfig: GroupedAllocationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionGroupedAllocationPrice: NewSubscriptionGroupedAllocationPrice ) = apply { - this.metadata = newSubscriptionGroupedAllocationPrice.metadata - this.externalPriceId = newSubscriptionGroupedAllocationPrice.externalPriceId - this.name = newSubscriptionGroupedAllocationPrice.name - this.billableMetricId = - newSubscriptionGroupedAllocationPrice.billableMetricId - this.itemId = newSubscriptionGroupedAllocationPrice.itemId - this.billedInAdvance = newSubscriptionGroupedAllocationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionGroupedAllocationPrice.metadata + externalPriceId = newSubscriptionGroupedAllocationPrice.externalPriceId + name = newSubscriptionGroupedAllocationPrice.name + billableMetricId = newSubscriptionGroupedAllocationPrice.billableMetricId + itemId = newSubscriptionGroupedAllocationPrice.itemId + billedInAdvance = newSubscriptionGroupedAllocationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionGroupedAllocationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionGroupedAllocationPrice.invoiceGroupingKey - this.cadence = newSubscriptionGroupedAllocationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionGroupedAllocationPrice.cadence + billingCycleConfiguration = newSubscriptionGroupedAllocationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionGroupedAllocationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionGroupedAllocationPrice.conversionRate - this.modelType = newSubscriptionGroupedAllocationPrice.modelType - this.groupedAllocationConfig = + conversionRate = newSubscriptionGroupedAllocationPrice.conversionRate + modelType = newSubscriptionGroupedAllocationPrice.modelType + groupedAllocationConfig = newSubscriptionGroupedAllocationPrice.groupedAllocationConfig - this.currency = newSubscriptionGroupedAllocationPrice.currency - this.referenceId = newSubscriptionGroupedAllocationPrice.referenceId - additionalProperties( + currency = newSubscriptionGroupedAllocationPrice.currency + referenceId = newSubscriptionGroupedAllocationPrice.referenceId + additionalProperties = newSubscriptionGroupedAllocationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -48971,75 +39046,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } - - /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -49047,37 +39079,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -49085,16 +39097,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -49103,88 +39105,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedAllocationConfig(groupedAllocationConfig: GroupedAllocationConfig) = - groupedAllocationConfig(JsonField.of(groupedAllocationConfig)) - - @JsonProperty("grouped_allocation_config") - @ExcludeMissing - fun groupedAllocationConfig( - groupedAllocationConfig: JsonField - ) = apply { this.groupedAllocationConfig = groupedAllocationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.groupedAllocationConfig = groupedAllocationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -49192,22 +39147,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionGroupedAllocationPrice = NewSubscriptionGroupedAllocationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedAllocationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedAllocationConfig) { + "`groupedAllocationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -49296,25 +39261,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedAllocationConfig.Builder::class) @NoAutoDetect class GroupedAllocationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedAllocationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -49330,24 +39288,32 @@ constructor( @JvmSynthetic internal fun from(groupedAllocationConfig: GroupedAllocationConfig) = apply { - additionalProperties(groupedAllocationConfig.additionalProperties) + additionalProperties = + groupedAllocationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedAllocationConfig = GroupedAllocationConfig(additionalProperties.toImmutable()) } @@ -49426,43 +39392,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -49472,57 +39421,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -49608,43 +39556,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -49654,8 +39585,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -49663,49 +39594,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -49792,25 +39722,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -49825,24 +39748,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -49881,238 +39811,123 @@ constructor( "NewSubscriptionGroupedAllocationPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedAllocationConfig=$groupedAllocationConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize( - builder = NewSubscriptionGroupedWithProratedMinimumPrice.Builder::class - ) @NoAutoDetect class NewSubscriptionGroupedWithProratedMinimumPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val groupedWithProratedMinimumConfig: - JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("grouped_with_prorated_minimum_config") + private val groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = - groupedWithProratedMinimumConfig.getRequired( - "grouped_with_prorated_minimum_config" - ) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun _groupedWithProratedMinimumConfig() = groupedWithProratedMinimumConfig + fun groupedWithProratedMinimumConfig(): GroupedWithProratedMinimumConfig = + groupedWithProratedMinimumConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionGroupedWithProratedMinimumPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - groupedWithProratedMinimumConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -50122,27 +39937,24 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null private var groupedWithProratedMinimumConfig: - JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + GroupedWithProratedMinimumConfig? = + null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic @@ -50150,37 +39962,36 @@ constructor( newSubscriptionGroupedWithProratedMinimumPrice: NewSubscriptionGroupedWithProratedMinimumPrice ) = apply { - this.metadata = newSubscriptionGroupedWithProratedMinimumPrice.metadata - this.externalPriceId = + metadata = newSubscriptionGroupedWithProratedMinimumPrice.metadata + externalPriceId = newSubscriptionGroupedWithProratedMinimumPrice.externalPriceId - this.name = newSubscriptionGroupedWithProratedMinimumPrice.name - this.billableMetricId = + name = newSubscriptionGroupedWithProratedMinimumPrice.name + billableMetricId = newSubscriptionGroupedWithProratedMinimumPrice.billableMetricId - this.itemId = newSubscriptionGroupedWithProratedMinimumPrice.itemId - this.billedInAdvance = + itemId = newSubscriptionGroupedWithProratedMinimumPrice.itemId + billedInAdvance = newSubscriptionGroupedWithProratedMinimumPrice.billedInAdvance - this.fixedPriceQuantity = + fixedPriceQuantity = newSubscriptionGroupedWithProratedMinimumPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionGroupedWithProratedMinimumPrice.invoiceGroupingKey - this.cadence = newSubscriptionGroupedWithProratedMinimumPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionGroupedWithProratedMinimumPrice.cadence + billingCycleConfiguration = newSubscriptionGroupedWithProratedMinimumPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionGroupedWithProratedMinimumPrice .invoicingCycleConfiguration - this.conversionRate = + conversionRate = newSubscriptionGroupedWithProratedMinimumPrice.conversionRate - this.modelType = newSubscriptionGroupedWithProratedMinimumPrice.modelType - this.groupedWithProratedMinimumConfig = + modelType = newSubscriptionGroupedWithProratedMinimumPrice.modelType + groupedWithProratedMinimumConfig = newSubscriptionGroupedWithProratedMinimumPrice .groupedWithProratedMinimumConfig - this.currency = newSubscriptionGroupedWithProratedMinimumPrice.currency - this.referenceId = - newSubscriptionGroupedWithProratedMinimumPrice.referenceId - additionalProperties( + currency = newSubscriptionGroupedWithProratedMinimumPrice.currency + referenceId = newSubscriptionGroupedWithProratedMinimumPrice.referenceId + additionalProperties = newSubscriptionGroupedWithProratedMinimumPrice.additionalProperties - ) + .toMutableMap() } /** @@ -50188,75 +39999,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -50264,37 +40032,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -50302,16 +40050,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -50320,53 +40058,19 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun groupedWithProratedMinimumConfig( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig - ) = - groupedWithProratedMinimumConfig( - JsonField.of(groupedWithProratedMinimumConfig) - ) - - @JsonProperty("grouped_with_prorated_minimum_config") - @ExcludeMissing - fun groupedWithProratedMinimumConfig( - groupedWithProratedMinimumConfig: - JsonField ) = apply { this.groupedWithProratedMinimumConfig = groupedWithProratedMinimumConfig } @@ -50375,40 +40079,21 @@ constructor( * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - fun currency(currency: String) = currency(JsonField.of(currency)) - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -50416,22 +40101,32 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionGroupedWithProratedMinimumPrice = NewSubscriptionGroupedWithProratedMinimumPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - groupedWithProratedMinimumConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(groupedWithProratedMinimumConfig) { + "`groupedWithProratedMinimumConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), @@ -50520,25 +40215,18 @@ constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = GroupedWithProratedMinimumConfig.Builder::class) @NoAutoDetect class GroupedWithProratedMinimumConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): GroupedWithProratedMinimumConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -50555,26 +40243,32 @@ constructor( internal fun from( groupedWithProratedMinimumConfig: GroupedWithProratedMinimumConfig ) = apply { - additionalProperties( - groupedWithProratedMinimumConfig.additionalProperties - ) + additionalProperties = + groupedWithProratedMinimumConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedWithProratedMinimumConfig = GroupedWithProratedMinimumConfig(additionalProperties.toImmutable()) } @@ -50654,43 +40348,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") - - /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -50700,57 +40377,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -50836,43 +40512,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -50882,8 +40541,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -50891,49 +40550,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -51020,25 +40678,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -51053,24 +40704,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -51109,233 +40767,122 @@ constructor( "NewSubscriptionGroupedWithProratedMinimumPrice{metadata=$metadata, externalPriceId=$externalPriceId, name=$name, billableMetricId=$billableMetricId, itemId=$itemId, billedInAdvance=$billedInAdvance, fixedPriceQuantity=$fixedPriceQuantity, invoiceGroupingKey=$invoiceGroupingKey, cadence=$cadence, billingCycleConfiguration=$billingCycleConfiguration, invoicingCycleConfiguration=$invoicingCycleConfiguration, conversionRate=$conversionRate, modelType=$modelType, groupedWithProratedMinimumConfig=$groupedWithProratedMinimumConfig, currency=$currency, referenceId=$referenceId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = NewSubscriptionBulkWithProrationPrice.Builder::class) @NoAutoDetect class NewSubscriptionBulkWithProrationPrice + @JsonCreator private constructor( - private val metadata: JsonField, - private val externalPriceId: JsonField, - private val name: JsonField, - private val billableMetricId: JsonField, - private val itemId: JsonField, - private val billedInAdvance: JsonField, - private val fixedPriceQuantity: JsonField, - private val invoiceGroupingKey: JsonField, - private val cadence: JsonField, - private val billingCycleConfiguration: JsonField, - private val invoicingCycleConfiguration: JsonField, - private val conversionRate: JsonField, - private val modelType: JsonField, - private val bulkWithProrationConfig: JsonField, - private val currency: JsonField, - private val referenceId: JsonField, - private val additionalProperties: Map, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("external_price_id") private val externalPriceId: String?, + @JsonProperty("name") private val name: String, + @JsonProperty("billable_metric_id") private val billableMetricId: String?, + @JsonProperty("item_id") private val itemId: String, + @JsonProperty("billed_in_advance") private val billedInAdvance: Boolean?, + @JsonProperty("fixed_price_quantity") private val fixedPriceQuantity: Double?, + @JsonProperty("invoice_grouping_key") private val invoiceGroupingKey: String?, + @JsonProperty("cadence") private val cadence: Cadence, + @JsonProperty("billing_cycle_configuration") + private val billingCycleConfiguration: BillingCycleConfiguration?, + @JsonProperty("invoicing_cycle_configuration") + private val invoicingCycleConfiguration: InvoicingCycleConfiguration?, + @JsonProperty("conversion_rate") private val conversionRate: Double?, + @JsonProperty("model_type") private val modelType: ModelType, + @JsonProperty("bulk_with_proration_config") + private val bulkWithProrationConfig: BulkWithProrationConfig, + @JsonProperty("currency") private val currency: String?, + @JsonProperty("reference_id") private val referenceId: String?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - - /** - * User-specified key/value pairs for the resource. Individual keys can be removed - * by setting the value to `null`, and the entire metadata mapping can be cleared by - * setting `metadata` to `null`. - */ - fun metadata(): Optional = - Optional.ofNullable(metadata.getNullable("metadata")) - - /** An alias for the price. */ - fun externalPriceId(): Optional = - Optional.ofNullable(externalPriceId.getNullable("external_price_id")) - - /** The name of the price. */ - fun name(): String = name.getRequired("name") - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(): Optional = - Optional.ofNullable(billableMetricId.getNullable("billable_metric_id")) - - /** The id of the item the plan will be associated with. */ - fun itemId(): String = itemId.getRequired("item_id") - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if this - * is true, and in-arrears if this is false. - */ - fun billedInAdvance(): Optional = - Optional.ofNullable(billedInAdvance.getNullable("billed_in_advance")) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - fun fixedPriceQuantity(): Optional = - Optional.ofNullable(fixedPriceQuantity.getNullable("fixed_price_quantity")) - - /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(): Optional = - Optional.ofNullable(invoiceGroupingKey.getNullable("invoice_grouping_key")) - - /** The cadence to bill for this price on. */ - fun cadence(): Cadence = cadence.getRequired("cadence") - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - fun billingCycleConfiguration(): Optional = - Optional.ofNullable( - billingCycleConfiguration.getNullable("billing_cycle_configuration") - ) - - /** - * Within each billing cycle, specifies the cadence at which invoices are produced. - * If unspecified, a single invoice is produced per billing cycle. - */ - fun invoicingCycleConfiguration(): Optional = - Optional.ofNullable( - invoicingCycleConfiguration.getNullable("invoicing_cycle_configuration") - ) - - /** The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(): Optional = - Optional.ofNullable(conversionRate.getNullable("conversion_rate")) - - fun modelType(): ModelType = modelType.getRequired("model_type") - - fun bulkWithProrationConfig(): BulkWithProrationConfig = - bulkWithProrationConfig.getRequired("bulk_with_proration_config") - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(): Optional = - Optional.ofNullable(currency.getNullable("currency")) - - /** - * A transient ID that can be used to reference this price when adding adjustments - * in the same API call. - */ - fun referenceId(): Optional = - Optional.ofNullable(referenceId.getNullable("reference_id")) - /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") @ExcludeMissing fun _metadata() = metadata + @JsonProperty("metadata") + fun metadata(): Optional = Optional.ofNullable(metadata) /** An alias for the price. */ @JsonProperty("external_price_id") - @ExcludeMissing - fun _externalPriceId() = externalPriceId + fun externalPriceId(): Optional = Optional.ofNullable(externalPriceId) /** The name of the price. */ - @JsonProperty("name") @ExcludeMissing fun _name() = name + @JsonProperty("name") fun name(): String = name /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ @JsonProperty("billable_metric_id") - @ExcludeMissing - fun _billableMetricId() = billableMetricId + fun billableMetricId(): Optional = Optional.ofNullable(billableMetricId) /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") @ExcludeMissing fun _itemId() = itemId + @JsonProperty("item_id") fun itemId(): String = itemId /** * If the Price represents a fixed cost, the price will be billed in-advance if this * is true, and in-arrears if this is false. */ @JsonProperty("billed_in_advance") - @ExcludeMissing - fun _billedInAdvance() = billedInAdvance + fun billedInAdvance(): Optional = Optional.ofNullable(billedInAdvance) /** * If the Price represents a fixed cost, this represents the quantity of units * applied. */ @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun _fixedPriceQuantity() = fixedPriceQuantity + fun fixedPriceQuantity(): Optional = Optional.ofNullable(fixedPriceQuantity) /** The property used to group this price on an invoice */ @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun _invoiceGroupingKey() = invoiceGroupingKey + fun invoiceGroupingKey(): Optional = Optional.ofNullable(invoiceGroupingKey) /** The cadence to bill for this price on. */ - @JsonProperty("cadence") @ExcludeMissing fun _cadence() = cadence + @JsonProperty("cadence") fun cadence(): Cadence = cadence /** * For custom cadence: specifies the duration of the billing period in days or * months. */ @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun _billingCycleConfiguration() = billingCycleConfiguration + fun billingCycleConfiguration(): Optional = + Optional.ofNullable(billingCycleConfiguration) /** * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun _invoicingCycleConfiguration() = invoicingCycleConfiguration + fun invoicingCycleConfiguration(): Optional = + Optional.ofNullable(invoicingCycleConfiguration) /** The per unit conversion rate of the price currency to the invoicing currency. */ @JsonProperty("conversion_rate") - @ExcludeMissing - fun _conversionRate() = conversionRate + fun conversionRate(): Optional = Optional.ofNullable(conversionRate) - @JsonProperty("model_type") @ExcludeMissing fun _modelType() = modelType + @JsonProperty("model_type") fun modelType(): ModelType = modelType @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun _bulkWithProrationConfig() = bulkWithProrationConfig + fun bulkWithProrationConfig(): BulkWithProrationConfig = bulkWithProrationConfig /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") @ExcludeMissing fun _currency() = currency + @JsonProperty("currency") + fun currency(): Optional = Optional.ofNullable(currency) /** * A transient ID that can be used to reference this price when adding adjustments * in the same API call. */ - @JsonProperty("reference_id") @ExcludeMissing fun _referenceId() = referenceId + @JsonProperty("reference_id") + fun referenceId(): Optional = Optional.ofNullable(referenceId) @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): NewSubscriptionBulkWithProrationPrice = apply { - if (!validated) { - metadata().map { it.validate() } - externalPriceId() - name() - billableMetricId() - itemId() - billedInAdvance() - fixedPriceQuantity() - invoiceGroupingKey() - cadence() - billingCycleConfiguration().map { it.validate() } - invoicingCycleConfiguration().map { it.validate() } - conversionRate() - modelType() - bulkWithProrationConfig().validate() - currency() - referenceId() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -51345,57 +40892,52 @@ constructor( class Builder { - private var metadata: JsonField = JsonMissing.of() - private var externalPriceId: JsonField = JsonMissing.of() - private var name: JsonField = JsonMissing.of() - private var billableMetricId: JsonField = JsonMissing.of() - private var itemId: JsonField = JsonMissing.of() - private var billedInAdvance: JsonField = JsonMissing.of() - private var fixedPriceQuantity: JsonField = JsonMissing.of() - private var invoiceGroupingKey: JsonField = JsonMissing.of() - private var cadence: JsonField = JsonMissing.of() - private var billingCycleConfiguration: JsonField = - JsonMissing.of() - private var invoicingCycleConfiguration: - JsonField = - JsonMissing.of() - private var conversionRate: JsonField = JsonMissing.of() - private var modelType: JsonField = JsonMissing.of() - private var bulkWithProrationConfig: JsonField = - JsonMissing.of() - private var currency: JsonField = JsonMissing.of() - private var referenceId: JsonField = JsonMissing.of() + private var metadata: Metadata? = null + private var externalPriceId: String? = null + private var name: String? = null + private var billableMetricId: String? = null + private var itemId: String? = null + private var billedInAdvance: Boolean? = null + private var fixedPriceQuantity: Double? = null + private var invoiceGroupingKey: String? = null + private var cadence: Cadence? = null + private var billingCycleConfiguration: BillingCycleConfiguration? = null + private var invoicingCycleConfiguration: InvoicingCycleConfiguration? = null + private var conversionRate: Double? = null + private var modelType: ModelType? = null + private var bulkWithProrationConfig: BulkWithProrationConfig? = null + private var currency: String? = null + private var referenceId: String? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from( newSubscriptionBulkWithProrationPrice: NewSubscriptionBulkWithProrationPrice ) = apply { - this.metadata = newSubscriptionBulkWithProrationPrice.metadata - this.externalPriceId = newSubscriptionBulkWithProrationPrice.externalPriceId - this.name = newSubscriptionBulkWithProrationPrice.name - this.billableMetricId = - newSubscriptionBulkWithProrationPrice.billableMetricId - this.itemId = newSubscriptionBulkWithProrationPrice.itemId - this.billedInAdvance = newSubscriptionBulkWithProrationPrice.billedInAdvance - this.fixedPriceQuantity = + metadata = newSubscriptionBulkWithProrationPrice.metadata + externalPriceId = newSubscriptionBulkWithProrationPrice.externalPriceId + name = newSubscriptionBulkWithProrationPrice.name + billableMetricId = newSubscriptionBulkWithProrationPrice.billableMetricId + itemId = newSubscriptionBulkWithProrationPrice.itemId + billedInAdvance = newSubscriptionBulkWithProrationPrice.billedInAdvance + fixedPriceQuantity = newSubscriptionBulkWithProrationPrice.fixedPriceQuantity - this.invoiceGroupingKey = + invoiceGroupingKey = newSubscriptionBulkWithProrationPrice.invoiceGroupingKey - this.cadence = newSubscriptionBulkWithProrationPrice.cadence - this.billingCycleConfiguration = + cadence = newSubscriptionBulkWithProrationPrice.cadence + billingCycleConfiguration = newSubscriptionBulkWithProrationPrice.billingCycleConfiguration - this.invoicingCycleConfiguration = + invoicingCycleConfiguration = newSubscriptionBulkWithProrationPrice.invoicingCycleConfiguration - this.conversionRate = newSubscriptionBulkWithProrationPrice.conversionRate - this.modelType = newSubscriptionBulkWithProrationPrice.modelType - this.bulkWithProrationConfig = + conversionRate = newSubscriptionBulkWithProrationPrice.conversionRate + modelType = newSubscriptionBulkWithProrationPrice.modelType + bulkWithProrationConfig = newSubscriptionBulkWithProrationPrice.bulkWithProrationConfig - this.currency = newSubscriptionBulkWithProrationPrice.currency - this.referenceId = newSubscriptionBulkWithProrationPrice.referenceId - additionalProperties( + currency = newSubscriptionBulkWithProrationPrice.currency + referenceId = newSubscriptionBulkWithProrationPrice.referenceId + additionalProperties = newSubscriptionBulkWithProrationPrice.additionalProperties - ) + .toMutableMap() } /** @@ -51403,75 +40945,32 @@ constructor( * removed by setting the value to `null`, and the entire metadata mapping can * be cleared by setting `metadata` to `null`. */ - fun metadata(metadata: Metadata) = metadata(JsonField.of(metadata)) - - /** - * User-specified key/value pairs for the resource. Individual keys can be - * removed by setting the value to `null`, and the entire metadata mapping can - * be cleared by setting `metadata` to `null`. - */ - @JsonProperty("metadata") - @ExcludeMissing - fun metadata(metadata: JsonField) = apply { this.metadata = metadata } + fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** An alias for the price. */ - fun externalPriceId(externalPriceId: String) = - externalPriceId(JsonField.of(externalPriceId)) - - /** An alias for the price. */ - @JsonProperty("external_price_id") - @ExcludeMissing - fun externalPriceId(externalPriceId: JsonField) = apply { + fun externalPriceId(externalPriceId: String) = apply { this.externalPriceId = externalPriceId } /** The name of the price. */ - fun name(name: String) = name(JsonField.of(name)) - - /** The name of the price. */ - @JsonProperty("name") - @ExcludeMissing - fun name(name: JsonField) = apply { this.name = name } - - /** - * The id of the billable metric for the price. Only needed if the price is - * usage-based. - */ - fun billableMetricId(billableMetricId: String) = - billableMetricId(JsonField.of(billableMetricId)) + fun name(name: String) = apply { this.name = name } /** * The id of the billable metric for the price. Only needed if the price is * usage-based. */ - @JsonProperty("billable_metric_id") - @ExcludeMissing - fun billableMetricId(billableMetricId: JsonField) = apply { + fun billableMetricId(billableMetricId: String) = apply { this.billableMetricId = billableMetricId } /** The id of the item the plan will be associated with. */ - fun itemId(itemId: String) = itemId(JsonField.of(itemId)) - - /** The id of the item the plan will be associated with. */ - @JsonProperty("item_id") - @ExcludeMissing - fun itemId(itemId: JsonField) = apply { this.itemId = itemId } + fun itemId(itemId: String) = apply { this.itemId = itemId } /** * If the Price represents a fixed cost, the price will be billed in-advance if * this is true, and in-arrears if this is false. */ - fun billedInAdvance(billedInAdvance: Boolean) = - billedInAdvance(JsonField.of(billedInAdvance)) - - /** - * If the Price represents a fixed cost, the price will be billed in-advance if - * this is true, and in-arrears if this is false. - */ - @JsonProperty("billed_in_advance") - @ExcludeMissing - fun billedInAdvance(billedInAdvance: JsonField) = apply { + fun billedInAdvance(billedInAdvance: Boolean) = apply { this.billedInAdvance = billedInAdvance } @@ -51479,37 +40978,17 @@ constructor( * If the Price represents a fixed cost, this represents the quantity of units * applied. */ - fun fixedPriceQuantity(fixedPriceQuantity: Double) = - fixedPriceQuantity(JsonField.of(fixedPriceQuantity)) - - /** - * If the Price represents a fixed cost, this represents the quantity of units - * applied. - */ - @JsonProperty("fixed_price_quantity") - @ExcludeMissing - fun fixedPriceQuantity(fixedPriceQuantity: JsonField) = apply { + fun fixedPriceQuantity(fixedPriceQuantity: Double) = apply { this.fixedPriceQuantity = fixedPriceQuantity } /** The property used to group this price on an invoice */ - fun invoiceGroupingKey(invoiceGroupingKey: String) = - invoiceGroupingKey(JsonField.of(invoiceGroupingKey)) - - /** The property used to group this price on an invoice */ - @JsonProperty("invoice_grouping_key") - @ExcludeMissing - fun invoiceGroupingKey(invoiceGroupingKey: JsonField) = apply { + fun invoiceGroupingKey(invoiceGroupingKey: String) = apply { this.invoiceGroupingKey = invoiceGroupingKey } /** The cadence to bill for this price on. */ - fun cadence(cadence: Cadence) = cadence(JsonField.of(cadence)) - - /** The cadence to bill for this price on. */ - @JsonProperty("cadence") - @ExcludeMissing - fun cadence(cadence: JsonField) = apply { this.cadence = cadence } + fun cadence(cadence: Cadence) = apply { this.cadence = cadence } /** * For custom cadence: specifies the duration of the billing period in days or @@ -51517,16 +40996,6 @@ constructor( */ fun billingCycleConfiguration( billingCycleConfiguration: BillingCycleConfiguration - ) = billingCycleConfiguration(JsonField.of(billingCycleConfiguration)) - - /** - * For custom cadence: specifies the duration of the billing period in days or - * months. - */ - @JsonProperty("billing_cycle_configuration") - @ExcludeMissing - fun billingCycleConfiguration( - billingCycleConfiguration: JsonField ) = apply { this.billingCycleConfiguration = billingCycleConfiguration } /** @@ -51535,88 +41004,41 @@ constructor( */ fun invoicingCycleConfiguration( invoicingCycleConfiguration: InvoicingCycleConfiguration - ) = invoicingCycleConfiguration(JsonField.of(invoicingCycleConfiguration)) - - /** - * Within each billing cycle, specifies the cadence at which invoices are - * produced. If unspecified, a single invoice is produced per billing cycle. - */ - @JsonProperty("invoicing_cycle_configuration") - @ExcludeMissing - fun invoicingCycleConfiguration( - invoicingCycleConfiguration: JsonField ) = apply { this.invoicingCycleConfiguration = invoicingCycleConfiguration } /** * The per unit conversion rate of the price currency to the invoicing currency. */ - fun conversionRate(conversionRate: Double) = - conversionRate(JsonField.of(conversionRate)) - - /** - * The per unit conversion rate of the price currency to the invoicing currency. - */ - @JsonProperty("conversion_rate") - @ExcludeMissing - fun conversionRate(conversionRate: JsonField) = apply { + fun conversionRate(conversionRate: Double) = apply { this.conversionRate = conversionRate } - fun modelType(modelType: ModelType) = modelType(JsonField.of(modelType)) - - @JsonProperty("model_type") - @ExcludeMissing - fun modelType(modelType: JsonField) = apply { - this.modelType = modelType - } + fun modelType(modelType: ModelType) = apply { this.modelType = modelType } fun bulkWithProrationConfig(bulkWithProrationConfig: BulkWithProrationConfig) = - bulkWithProrationConfig(JsonField.of(bulkWithProrationConfig)) - - @JsonProperty("bulk_with_proration_config") - @ExcludeMissing - fun bulkWithProrationConfig( - bulkWithProrationConfig: JsonField - ) = apply { this.bulkWithProrationConfig = bulkWithProrationConfig } - - /** - * An ISO 4217 currency string, or custom pricing unit identifier, in which this - * price is billed. - */ - fun currency(currency: String) = currency(JsonField.of(currency)) + apply { + this.bulkWithProrationConfig = bulkWithProrationConfig + } /** * An ISO 4217 currency string, or custom pricing unit identifier, in which this * price is billed. */ - @JsonProperty("currency") - @ExcludeMissing - fun currency(currency: JsonField) = apply { this.currency = currency } - - /** - * A transient ID that can be used to reference this price when adding - * adjustments in the same API call. - */ - fun referenceId(referenceId: String) = referenceId(JsonField.of(referenceId)) + fun currency(currency: String) = apply { this.currency = currency } /** * A transient ID that can be used to reference this price when adding * adjustments in the same API call. */ - @JsonProperty("reference_id") - @ExcludeMissing - fun referenceId(referenceId: JsonField) = apply { - this.referenceId = referenceId - } + fun referenceId(referenceId: String) = apply { this.referenceId = referenceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -51624,47 +41046,50 @@ constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): NewSubscriptionBulkWithProrationPrice = NewSubscriptionBulkWithProrationPrice( metadata, externalPriceId, - name, + checkNotNull(name) { "`name` is required but was not set" }, billableMetricId, - itemId, + checkNotNull(itemId) { "`itemId` is required but was not set" }, billedInAdvance, fixedPriceQuantity, invoiceGroupingKey, - cadence, + checkNotNull(cadence) { "`cadence` is required but was not set" }, billingCycleConfiguration, invoicingCycleConfiguration, conversionRate, - modelType, - bulkWithProrationConfig, + checkNotNull(modelType) { "`modelType` is required but was not set" }, + checkNotNull(bulkWithProrationConfig) { + "`bulkWithProrationConfig` is required but was not set" + }, currency, referenceId, additionalProperties.toImmutable(), ) } - @JsonDeserialize(builder = BulkWithProrationConfig.Builder::class) @NoAutoDetect class BulkWithProrationConfig + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BulkWithProrationConfig = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -51680,24 +41105,32 @@ constructor( @JvmSynthetic internal fun from(bulkWithProrationConfig: BulkWithProrationConfig) = apply { - additionalProperties(bulkWithProrationConfig.additionalProperties) + additionalProperties = + bulkWithProrationConfig.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BulkWithProrationConfig = BulkWithProrationConfig(additionalProperties.toImmutable()) } @@ -51858,43 +41291,26 @@ constructor( * For custom cadence: specifies the duration of the billing period in days or * months. */ - @JsonDeserialize(builder = BillingCycleConfiguration.Builder::class) @NoAutoDetect class BillingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): BillingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -51904,57 +41320,56 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(billingCycleConfiguration: BillingCycleConfiguration) = apply { - this.duration = billingCycleConfiguration.duration - this.durationUnit = billingCycleConfiguration.durationUnit - additionalProperties(billingCycleConfiguration.additionalProperties) + duration = billingCycleConfiguration.duration + durationUnit = billingCycleConfiguration.durationUnit + additionalProperties = + billingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleConfiguration = BillingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -52040,43 +41455,26 @@ constructor( * Within each billing cycle, specifies the cadence at which invoices are produced. * If unspecified, a single invoice is produced per billing cycle. */ - @JsonDeserialize(builder = InvoicingCycleConfiguration.Builder::class) @NoAutoDetect class InvoicingCycleConfiguration + @JsonCreator private constructor( - private val duration: JsonField, - private val durationUnit: JsonField, - private val additionalProperties: Map, + @JsonProperty("duration") private val duration: Long, + @JsonProperty("duration_unit") private val durationUnit: DurationUnit, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The duration of the billing period. */ - fun duration(): Long = duration.getRequired("duration") + @JsonProperty("duration") fun duration(): Long = duration /** The unit of billing period duration. */ - fun durationUnit(): DurationUnit = durationUnit.getRequired("duration_unit") - - /** The duration of the billing period. */ - @JsonProperty("duration") @ExcludeMissing fun _duration() = duration - - /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun _durationUnit() = durationUnit + @JsonProperty("duration_unit") fun durationUnit(): DurationUnit = durationUnit @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): InvoicingCycleConfiguration = apply { - if (!validated) { - duration() - durationUnit() - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -52086,8 +41484,8 @@ constructor( class Builder { - private var duration: JsonField = JsonMissing.of() - private var durationUnit: JsonField = JsonMissing.of() + private var duration: Long? = null + private var durationUnit: DurationUnit? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -52095,49 +41493,48 @@ constructor( internal fun from( invoicingCycleConfiguration: InvoicingCycleConfiguration ) = apply { - this.duration = invoicingCycleConfiguration.duration - this.durationUnit = invoicingCycleConfiguration.durationUnit - additionalProperties(invoicingCycleConfiguration.additionalProperties) + duration = invoicingCycleConfiguration.duration + durationUnit = invoicingCycleConfiguration.durationUnit + additionalProperties = + invoicingCycleConfiguration.additionalProperties.toMutableMap() } /** The duration of the billing period. */ - fun duration(duration: Long) = duration(JsonField.of(duration)) - - /** The duration of the billing period. */ - @JsonProperty("duration") - @ExcludeMissing - fun duration(duration: JsonField) = apply { this.duration = duration } - - /** The unit of billing period duration. */ - fun durationUnit(durationUnit: DurationUnit) = - durationUnit(JsonField.of(durationUnit)) + fun duration(duration: Long) = apply { this.duration = duration } /** The unit of billing period duration. */ - @JsonProperty("duration_unit") - @ExcludeMissing - fun durationUnit(durationUnit: JsonField) = apply { + fun durationUnit(durationUnit: DurationUnit) = apply { this.durationUnit = durationUnit } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): InvoicingCycleConfiguration = InvoicingCycleConfiguration( - duration, - durationUnit, + checkNotNull(duration) { "`duration` is required but was not set" }, + checkNotNull(durationUnit) { + "`durationUnit` is required but was not set" + }, additionalProperties.toImmutable(), ) } @@ -52224,25 +41621,18 @@ constructor( * by setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties - fun validate(): Metadata = apply { - if (!validated) { - validated = true - } - } - fun toBuilder() = Builder().from(this) companion object { @@ -52257,24 +41647,31 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties( additionalProperties: Map ) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeResponse.kt index 48e5c1bc..bbcb97f0 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionSchedulePlanChangeResponse.Builder::class) @NoAutoDetect class SubscriptionSchedulePlanChangeResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionSchedulePlanChangeResponse = apply { if (!validated) { metadata().validate() @@ -403,36 +452,37 @@ private constructor( internal fun from( subscriptionSchedulePlanChangeResponse: SubscriptionSchedulePlanChangeResponse ) = apply { - this.metadata = subscriptionSchedulePlanChangeResponse.metadata - this.id = subscriptionSchedulePlanChangeResponse.id - this.customer = subscriptionSchedulePlanChangeResponse.customer - this.plan = subscriptionSchedulePlanChangeResponse.plan - this.startDate = subscriptionSchedulePlanChangeResponse.startDate - this.endDate = subscriptionSchedulePlanChangeResponse.endDate - this.createdAt = subscriptionSchedulePlanChangeResponse.createdAt - this.currentBillingPeriodStartDate = + metadata = subscriptionSchedulePlanChangeResponse.metadata + id = subscriptionSchedulePlanChangeResponse.id + customer = subscriptionSchedulePlanChangeResponse.customer + plan = subscriptionSchedulePlanChangeResponse.plan + startDate = subscriptionSchedulePlanChangeResponse.startDate + endDate = subscriptionSchedulePlanChangeResponse.endDate + createdAt = subscriptionSchedulePlanChangeResponse.createdAt + currentBillingPeriodStartDate = subscriptionSchedulePlanChangeResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = + currentBillingPeriodEndDate = subscriptionSchedulePlanChangeResponse.currentBillingPeriodEndDate - this.status = subscriptionSchedulePlanChangeResponse.status - this.trialInfo = subscriptionSchedulePlanChangeResponse.trialInfo - this.activePlanPhaseOrder = subscriptionSchedulePlanChangeResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = + status = subscriptionSchedulePlanChangeResponse.status + trialInfo = subscriptionSchedulePlanChangeResponse.trialInfo + activePlanPhaseOrder = subscriptionSchedulePlanChangeResponse.activePlanPhaseOrder + fixedFeeQuantitySchedule = subscriptionSchedulePlanChangeResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = subscriptionSchedulePlanChangeResponse.defaultInvoiceMemo - this.autoCollection = subscriptionSchedulePlanChangeResponse.autoCollection - this.netTerms = subscriptionSchedulePlanChangeResponse.netTerms - this.redeemedCoupon = subscriptionSchedulePlanChangeResponse.redeemedCoupon - this.billingCycleDay = subscriptionSchedulePlanChangeResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + defaultInvoiceMemo = subscriptionSchedulePlanChangeResponse.defaultInvoiceMemo + autoCollection = subscriptionSchedulePlanChangeResponse.autoCollection + netTerms = subscriptionSchedulePlanChangeResponse.netTerms + redeemedCoupon = subscriptionSchedulePlanChangeResponse.redeemedCoupon + billingCycleDay = subscriptionSchedulePlanChangeResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionSchedulePlanChangeResponse.billingCycleAnchorConfiguration - this.invoicingThreshold = subscriptionSchedulePlanChangeResponse.invoicingThreshold - this.priceIntervals = subscriptionSchedulePlanChangeResponse.priceIntervals - this.adjustmentIntervals = subscriptionSchedulePlanChangeResponse.adjustmentIntervals - this.discountIntervals = subscriptionSchedulePlanChangeResponse.discountIntervals - this.minimumIntervals = subscriptionSchedulePlanChangeResponse.minimumIntervals - this.maximumIntervals = subscriptionSchedulePlanChangeResponse.maximumIntervals - additionalProperties(subscriptionSchedulePlanChangeResponse.additionalProperties) + invoicingThreshold = subscriptionSchedulePlanChangeResponse.invoicingThreshold + priceIntervals = subscriptionSchedulePlanChangeResponse.priceIntervals + adjustmentIntervals = subscriptionSchedulePlanChangeResponse.adjustmentIntervals + discountIntervals = subscriptionSchedulePlanChangeResponse.discountIntervals + minimumIntervals = subscriptionSchedulePlanChangeResponse.minimumIntervals + maximumIntervals = subscriptionSchedulePlanChangeResponse.maximumIntervals + additionalProperties = + subscriptionSchedulePlanChangeResponse.additionalProperties.toMutableMap() } /** @@ -447,13 +497,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -493,8 +541,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -511,30 +557,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -550,8 +588,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -569,8 +605,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -578,14 +612,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -593,8 +623,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -602,8 +630,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -619,8 +645,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -637,8 +661,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -655,15 +677,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -682,8 +700,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -692,8 +708,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -701,8 +715,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -712,8 +724,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -723,8 +733,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -734,8 +742,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -745,8 +751,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -756,26 +760,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionSchedulePlanChangeResponse = SubscriptionSchedulePlanChangeResponse( metadata, @@ -807,20 +814,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -855,6 +869,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -884,24 +900,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -910,8 +922,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -920,8 +930,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -929,8 +937,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -938,18 +944,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1203,22 +1214,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1285,6 +1309,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1318,20 +1344,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1345,8 +1370,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1356,8 +1379,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1367,8 +1388,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1377,15 +1396,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1401,20 +1416,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1422,6 +1434,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1505,22 +1525,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1588,6 +1621,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1622,21 +1657,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1650,8 +1683,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1661,8 +1692,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1672,8 +1701,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1682,15 +1709,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1706,20 +1729,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1727,6 +1747,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1810,22 +1838,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1890,6 +1931,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1923,20 +1966,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1950,8 +1992,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1961,8 +2001,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1972,8 +2010,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1982,15 +2018,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2006,20 +2038,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2027,6 +2056,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2110,23 +2147,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2197,6 +2249,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2232,21 +2286,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2260,8 +2312,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2271,8 +2321,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2282,8 +2330,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2292,15 +2338,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2316,8 +2358,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2326,18 +2366,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2345,6 +2382,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2429,22 +2474,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2509,6 +2567,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2542,20 +2602,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2569,8 +2627,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2580,8 +2636,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2591,8 +2645,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2601,15 +2653,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2625,20 +2673,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2646,6 +2691,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2748,18 +2801,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2804,6 +2858,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2830,10 +2886,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2850,8 +2907,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2864,8 +2919,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2878,24 +2931,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3103,21 +3159,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3163,6 +3230,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3194,21 +3263,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3218,8 +3285,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3228,8 +3293,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3238,8 +3301,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3247,8 +3308,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3258,8 +3317,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3267,12 +3324,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3280,6 +3336,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3361,21 +3425,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3423,6 +3498,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3454,21 +3531,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3482,8 +3557,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3492,8 +3565,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3502,8 +3573,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3511,8 +3580,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3522,8 +3589,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3531,12 +3596,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3544,6 +3608,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3625,21 +3697,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3691,6 +3774,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3722,20 +3807,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3751,8 +3834,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3761,8 +3842,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3771,8 +3850,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3780,8 +3857,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3791,8 +3866,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3800,12 +3873,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3813,6 +3885,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3895,19 +3975,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3929,6 +4016,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3956,53 +4045,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4031,20 +4117,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4092,6 +4187,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4121,20 +4218,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4143,8 +4238,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4152,8 +4245,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4163,8 +4254,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4180,26 +4269,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4234,19 +4326,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4266,23 +4359,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4303,20 +4401,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4364,6 +4471,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4393,20 +4502,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4415,8 +4522,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4424,8 +4529,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4435,8 +4538,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4452,26 +4553,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4505,23 +4609,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5076,6 +5194,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5112,21 +5232,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5139,8 +5257,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5155,8 +5271,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5617,8 +5731,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5626,8 +5738,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5644,8 +5754,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5663,8 +5771,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5682,26 +5788,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5716,18 +5825,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5744,6 +5858,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5769,41 +5885,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5811,6 +5921,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5856,18 +5974,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5885,6 +6008,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5910,46 +6035,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6040,16 +6164,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6059,6 +6184,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6080,30 +6207,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseParams.kt index 5a1f9f7c..8965c80f 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.time.LocalDate import java.util.Objects @@ -51,19 +52,21 @@ constructor( } } - @JsonDeserialize(builder = SubscriptionTriggerPhaseBody.Builder::class) @NoAutoDetect class SubscriptionTriggerPhaseBody + @JsonCreator internal constructor( - private val effectiveDate: LocalDate?, - private val additionalProperties: Map, + @JsonProperty("effective_date") private val effectiveDate: LocalDate?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * The date on which the phase change should take effect. If not provided, defaults to today * in the customer's timezone. */ - @JsonProperty("effective_date") fun effectiveDate(): LocalDate? = effectiveDate + @JsonProperty("effective_date") + fun effectiveDate(): Optional = Optional.ofNullable(effectiveDate) @JsonAnyGetter @ExcludeMissing @@ -83,33 +86,38 @@ constructor( @JvmSynthetic internal fun from(subscriptionTriggerPhaseBody: SubscriptionTriggerPhaseBody) = apply { - this.effectiveDate = subscriptionTriggerPhaseBody.effectiveDate - additionalProperties(subscriptionTriggerPhaseBody.additionalProperties) + effectiveDate = subscriptionTriggerPhaseBody.effectiveDate + additionalProperties = + subscriptionTriggerPhaseBody.additionalProperties.toMutableMap() } /** * The date on which the phase change should take effect. If not provided, defaults to * today in the customer's timezone. */ - @JsonProperty("effective_date") fun effectiveDate(effectiveDate: LocalDate) = apply { this.effectiveDate = effectiveDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionTriggerPhaseBody = SubscriptionTriggerPhaseBody(effectiveDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseResponse.kt index 8ebc4e15..101559a2 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionTriggerPhaseResponse.Builder::class) @NoAutoDetect class SubscriptionTriggerPhaseResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionTriggerPhaseResponse = apply { if (!validated) { metadata().validate() @@ -402,36 +451,36 @@ private constructor( @JvmSynthetic internal fun from(subscriptionTriggerPhaseResponse: SubscriptionTriggerPhaseResponse) = apply { - this.metadata = subscriptionTriggerPhaseResponse.metadata - this.id = subscriptionTriggerPhaseResponse.id - this.customer = subscriptionTriggerPhaseResponse.customer - this.plan = subscriptionTriggerPhaseResponse.plan - this.startDate = subscriptionTriggerPhaseResponse.startDate - this.endDate = subscriptionTriggerPhaseResponse.endDate - this.createdAt = subscriptionTriggerPhaseResponse.createdAt - this.currentBillingPeriodStartDate = + metadata = subscriptionTriggerPhaseResponse.metadata + id = subscriptionTriggerPhaseResponse.id + customer = subscriptionTriggerPhaseResponse.customer + plan = subscriptionTriggerPhaseResponse.plan + startDate = subscriptionTriggerPhaseResponse.startDate + endDate = subscriptionTriggerPhaseResponse.endDate + createdAt = subscriptionTriggerPhaseResponse.createdAt + currentBillingPeriodStartDate = subscriptionTriggerPhaseResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = + currentBillingPeriodEndDate = subscriptionTriggerPhaseResponse.currentBillingPeriodEndDate - this.status = subscriptionTriggerPhaseResponse.status - this.trialInfo = subscriptionTriggerPhaseResponse.trialInfo - this.activePlanPhaseOrder = subscriptionTriggerPhaseResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = - subscriptionTriggerPhaseResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = subscriptionTriggerPhaseResponse.defaultInvoiceMemo - this.autoCollection = subscriptionTriggerPhaseResponse.autoCollection - this.netTerms = subscriptionTriggerPhaseResponse.netTerms - this.redeemedCoupon = subscriptionTriggerPhaseResponse.redeemedCoupon - this.billingCycleDay = subscriptionTriggerPhaseResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + status = subscriptionTriggerPhaseResponse.status + trialInfo = subscriptionTriggerPhaseResponse.trialInfo + activePlanPhaseOrder = subscriptionTriggerPhaseResponse.activePlanPhaseOrder + fixedFeeQuantitySchedule = subscriptionTriggerPhaseResponse.fixedFeeQuantitySchedule + defaultInvoiceMemo = subscriptionTriggerPhaseResponse.defaultInvoiceMemo + autoCollection = subscriptionTriggerPhaseResponse.autoCollection + netTerms = subscriptionTriggerPhaseResponse.netTerms + redeemedCoupon = subscriptionTriggerPhaseResponse.redeemedCoupon + billingCycleDay = subscriptionTriggerPhaseResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionTriggerPhaseResponse.billingCycleAnchorConfiguration - this.invoicingThreshold = subscriptionTriggerPhaseResponse.invoicingThreshold - this.priceIntervals = subscriptionTriggerPhaseResponse.priceIntervals - this.adjustmentIntervals = subscriptionTriggerPhaseResponse.adjustmentIntervals - this.discountIntervals = subscriptionTriggerPhaseResponse.discountIntervals - this.minimumIntervals = subscriptionTriggerPhaseResponse.minimumIntervals - this.maximumIntervals = subscriptionTriggerPhaseResponse.maximumIntervals - additionalProperties(subscriptionTriggerPhaseResponse.additionalProperties) + invoicingThreshold = subscriptionTriggerPhaseResponse.invoicingThreshold + priceIntervals = subscriptionTriggerPhaseResponse.priceIntervals + adjustmentIntervals = subscriptionTriggerPhaseResponse.adjustmentIntervals + discountIntervals = subscriptionTriggerPhaseResponse.discountIntervals + minimumIntervals = subscriptionTriggerPhaseResponse.minimumIntervals + maximumIntervals = subscriptionTriggerPhaseResponse.maximumIntervals + additionalProperties = + subscriptionTriggerPhaseResponse.additionalProperties.toMutableMap() } /** @@ -446,13 +495,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -492,8 +539,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -510,30 +555,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -549,8 +586,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -568,8 +603,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -577,14 +610,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -592,8 +621,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -601,8 +628,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -618,8 +643,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -636,8 +659,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -654,15 +675,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -681,8 +698,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -691,8 +706,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -700,8 +713,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -711,8 +722,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -722,8 +731,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -733,8 +740,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -744,8 +749,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -755,26 +758,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionTriggerPhaseResponse = SubscriptionTriggerPhaseResponse( metadata, @@ -806,20 +812,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -854,6 +867,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -883,24 +898,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -909,8 +920,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -919,8 +928,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -928,8 +935,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -937,18 +942,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1202,22 +1212,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1284,6 +1307,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1317,20 +1342,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1344,8 +1368,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1355,8 +1377,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1366,8 +1386,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1376,15 +1394,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1400,20 +1414,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1421,6 +1432,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1504,22 +1523,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1587,6 +1619,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1621,21 +1655,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1649,8 +1681,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1660,8 +1690,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1671,8 +1699,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1681,15 +1707,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1705,20 +1727,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1726,6 +1745,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1809,22 +1836,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1889,6 +1929,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1922,20 +1964,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1949,8 +1990,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1960,8 +1999,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1971,8 +2008,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1981,15 +2016,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2005,20 +2036,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2026,6 +2054,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2109,23 +2145,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2196,6 +2247,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2231,21 +2284,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2259,8 +2310,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2270,8 +2319,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2281,8 +2328,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2291,15 +2336,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2315,8 +2356,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2325,18 +2364,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2344,6 +2380,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2428,22 +2472,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2508,6 +2565,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2541,20 +2600,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2568,8 +2625,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2579,8 +2634,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2590,8 +2643,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2600,15 +2651,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2624,20 +2671,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2645,6 +2689,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2747,18 +2799,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2803,6 +2856,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2829,10 +2884,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2849,8 +2905,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2863,8 +2917,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2877,24 +2929,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3102,21 +3157,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3162,6 +3228,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3193,21 +3261,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3217,8 +3283,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3227,8 +3291,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3237,8 +3299,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3246,8 +3306,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3257,8 +3315,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3266,12 +3322,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3279,6 +3334,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3360,21 +3423,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3422,6 +3496,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3453,21 +3529,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3481,8 +3555,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3491,8 +3563,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3501,8 +3571,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3510,8 +3578,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3521,8 +3587,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3530,12 +3594,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3543,6 +3606,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3624,21 +3695,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3690,6 +3772,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3721,20 +3805,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3750,8 +3832,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3760,8 +3840,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3770,8 +3848,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3779,8 +3855,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3790,8 +3864,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3799,12 +3871,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3812,6 +3883,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3894,19 +3973,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3928,6 +4014,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3955,53 +4043,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4030,20 +4115,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4091,6 +4185,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4120,20 +4216,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4142,8 +4236,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4151,8 +4243,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4162,8 +4252,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4179,26 +4267,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4233,19 +4324,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4265,23 +4357,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4302,20 +4399,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4363,6 +4469,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4392,20 +4500,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4414,8 +4520,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4423,8 +4527,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4434,8 +4536,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4451,26 +4551,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4504,23 +4607,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5075,6 +5192,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5111,21 +5230,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5138,8 +5255,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5154,8 +5269,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5616,8 +5729,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5625,8 +5736,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5643,8 +5752,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5662,8 +5769,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5681,26 +5786,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5715,18 +5823,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5743,6 +5856,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5768,41 +5883,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5810,6 +5919,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5855,18 +5972,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5884,6 +6006,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5909,46 +6033,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6039,16 +6162,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6058,6 +6182,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6079,30 +6205,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleCancellationResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleCancellationResponse.kt index 51f12434..6b89aabe 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleCancellationResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleCancellationResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionUnscheduleCancellationResponse.Builder::class) @NoAutoDetect class SubscriptionUnscheduleCancellationResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionUnscheduleCancellationResponse = apply { if (!validated) { metadata().validate() @@ -403,38 +452,37 @@ private constructor( internal fun from( subscriptionUnscheduleCancellationResponse: SubscriptionUnscheduleCancellationResponse ) = apply { - this.metadata = subscriptionUnscheduleCancellationResponse.metadata - this.id = subscriptionUnscheduleCancellationResponse.id - this.customer = subscriptionUnscheduleCancellationResponse.customer - this.plan = subscriptionUnscheduleCancellationResponse.plan - this.startDate = subscriptionUnscheduleCancellationResponse.startDate - this.endDate = subscriptionUnscheduleCancellationResponse.endDate - this.createdAt = subscriptionUnscheduleCancellationResponse.createdAt - this.currentBillingPeriodStartDate = + metadata = subscriptionUnscheduleCancellationResponse.metadata + id = subscriptionUnscheduleCancellationResponse.id + customer = subscriptionUnscheduleCancellationResponse.customer + plan = subscriptionUnscheduleCancellationResponse.plan + startDate = subscriptionUnscheduleCancellationResponse.startDate + endDate = subscriptionUnscheduleCancellationResponse.endDate + createdAt = subscriptionUnscheduleCancellationResponse.createdAt + currentBillingPeriodStartDate = subscriptionUnscheduleCancellationResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = + currentBillingPeriodEndDate = subscriptionUnscheduleCancellationResponse.currentBillingPeriodEndDate - this.status = subscriptionUnscheduleCancellationResponse.status - this.trialInfo = subscriptionUnscheduleCancellationResponse.trialInfo - this.activePlanPhaseOrder = - subscriptionUnscheduleCancellationResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = + status = subscriptionUnscheduleCancellationResponse.status + trialInfo = subscriptionUnscheduleCancellationResponse.trialInfo + activePlanPhaseOrder = subscriptionUnscheduleCancellationResponse.activePlanPhaseOrder + fixedFeeQuantitySchedule = subscriptionUnscheduleCancellationResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = subscriptionUnscheduleCancellationResponse.defaultInvoiceMemo - this.autoCollection = subscriptionUnscheduleCancellationResponse.autoCollection - this.netTerms = subscriptionUnscheduleCancellationResponse.netTerms - this.redeemedCoupon = subscriptionUnscheduleCancellationResponse.redeemedCoupon - this.billingCycleDay = subscriptionUnscheduleCancellationResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + defaultInvoiceMemo = subscriptionUnscheduleCancellationResponse.defaultInvoiceMemo + autoCollection = subscriptionUnscheduleCancellationResponse.autoCollection + netTerms = subscriptionUnscheduleCancellationResponse.netTerms + redeemedCoupon = subscriptionUnscheduleCancellationResponse.redeemedCoupon + billingCycleDay = subscriptionUnscheduleCancellationResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionUnscheduleCancellationResponse.billingCycleAnchorConfiguration - this.invoicingThreshold = subscriptionUnscheduleCancellationResponse.invoicingThreshold - this.priceIntervals = subscriptionUnscheduleCancellationResponse.priceIntervals - this.adjustmentIntervals = - subscriptionUnscheduleCancellationResponse.adjustmentIntervals - this.discountIntervals = subscriptionUnscheduleCancellationResponse.discountIntervals - this.minimumIntervals = subscriptionUnscheduleCancellationResponse.minimumIntervals - this.maximumIntervals = subscriptionUnscheduleCancellationResponse.maximumIntervals - additionalProperties(subscriptionUnscheduleCancellationResponse.additionalProperties) + invoicingThreshold = subscriptionUnscheduleCancellationResponse.invoicingThreshold + priceIntervals = subscriptionUnscheduleCancellationResponse.priceIntervals + adjustmentIntervals = subscriptionUnscheduleCancellationResponse.adjustmentIntervals + discountIntervals = subscriptionUnscheduleCancellationResponse.discountIntervals + minimumIntervals = subscriptionUnscheduleCancellationResponse.minimumIntervals + maximumIntervals = subscriptionUnscheduleCancellationResponse.maximumIntervals + additionalProperties = + subscriptionUnscheduleCancellationResponse.additionalProperties.toMutableMap() } /** @@ -449,13 +497,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -495,8 +541,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -513,30 +557,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -552,8 +588,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -571,8 +605,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -580,14 +612,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -595,8 +623,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -604,8 +630,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -621,8 +645,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -639,8 +661,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -657,15 +677,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -684,8 +700,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -694,8 +708,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -703,8 +715,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -714,8 +724,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -725,8 +733,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -736,8 +742,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -747,8 +751,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -758,26 +760,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionUnscheduleCancellationResponse = SubscriptionUnscheduleCancellationResponse( metadata, @@ -809,20 +814,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -857,6 +869,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -886,24 +900,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -912,8 +922,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -922,8 +930,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -931,8 +937,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -940,18 +944,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1205,22 +1214,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1287,6 +1309,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1320,20 +1344,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1347,8 +1370,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1358,8 +1379,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1369,8 +1388,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1379,15 +1396,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1403,20 +1416,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1424,6 +1434,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1507,22 +1525,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1590,6 +1621,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1624,21 +1657,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1652,8 +1683,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1663,8 +1692,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1674,8 +1701,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1684,15 +1709,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1708,20 +1729,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1729,6 +1747,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1812,22 +1838,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1892,6 +1931,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1925,20 +1966,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1952,8 +1992,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1963,8 +2001,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1974,8 +2010,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1984,15 +2018,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2008,20 +2038,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2029,6 +2056,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2112,23 +2147,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2199,6 +2249,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2234,21 +2286,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2262,8 +2312,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2273,8 +2321,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2284,8 +2330,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2294,15 +2338,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2318,8 +2358,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2328,18 +2366,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2347,6 +2382,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2431,22 +2474,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2511,6 +2567,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2544,20 +2602,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2571,8 +2627,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2582,8 +2636,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2593,8 +2645,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2603,15 +2653,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2627,20 +2673,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2648,6 +2691,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2750,18 +2801,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2806,6 +2858,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2832,10 +2886,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2852,8 +2907,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2866,8 +2919,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2880,24 +2931,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3105,21 +3159,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3165,6 +3230,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3196,21 +3263,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3220,8 +3285,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3230,8 +3293,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3240,8 +3301,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3249,8 +3308,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3260,8 +3317,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3269,12 +3324,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3282,6 +3336,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3363,21 +3425,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3425,6 +3498,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3456,21 +3531,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3484,8 +3557,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3494,8 +3565,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3504,8 +3573,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3513,8 +3580,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3524,8 +3589,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3533,12 +3596,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3546,6 +3608,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3627,21 +3697,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3693,6 +3774,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3724,20 +3807,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3753,8 +3834,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3763,8 +3842,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3773,8 +3850,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3782,8 +3857,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3793,8 +3866,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3802,12 +3873,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3815,6 +3885,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3897,19 +3975,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3931,6 +4016,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3958,53 +4045,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4033,20 +4117,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4094,6 +4187,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4123,20 +4218,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4145,8 +4238,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4154,8 +4245,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4165,8 +4254,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4182,26 +4269,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4236,19 +4326,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4268,23 +4359,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4305,20 +4401,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4366,6 +4471,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4395,20 +4502,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4417,8 +4522,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4426,8 +4529,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4437,8 +4538,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4454,26 +4553,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4507,23 +4609,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5078,6 +5194,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5114,21 +5232,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5141,8 +5257,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5157,8 +5271,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5619,8 +5731,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5628,8 +5738,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5646,8 +5754,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5665,8 +5771,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5684,26 +5788,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5718,18 +5825,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5746,6 +5858,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5771,41 +5885,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5813,6 +5921,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5858,18 +5974,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5887,6 +6008,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5912,46 +6035,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6042,16 +6164,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6061,6 +6184,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6082,30 +6207,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleFixedFeeQuantityUpdatesParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleFixedFeeQuantityUpdatesParams.kt index 3b3c5d01..fa8b1d2f 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleFixedFeeQuantityUpdatesParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleFixedFeeQuantityUpdatesParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects @@ -49,16 +50,17 @@ constructor( } } - @JsonDeserialize(builder = SubscriptionUnscheduleFixedFeeQuantityUpdatesBody.Builder::class) @NoAutoDetect class SubscriptionUnscheduleFixedFeeQuantityUpdatesBody + @JsonCreator internal constructor( - private val priceId: String?, - private val additionalProperties: Map, + @JsonProperty("price_id") private val priceId: String, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Price for which the updates should be cleared. Must be a fixed fee. */ - @JsonProperty("price_id") fun priceId(): String? = priceId + @JsonProperty("price_id") fun priceId(): String = priceId @JsonAnyGetter @ExcludeMissing @@ -81,30 +83,34 @@ constructor( subscriptionUnscheduleFixedFeeQuantityUpdatesBody: SubscriptionUnscheduleFixedFeeQuantityUpdatesBody ) = apply { - this.priceId = subscriptionUnscheduleFixedFeeQuantityUpdatesBody.priceId - additionalProperties( + priceId = subscriptionUnscheduleFixedFeeQuantityUpdatesBody.priceId + additionalProperties = subscriptionUnscheduleFixedFeeQuantityUpdatesBody.additionalProperties - ) + .toMutableMap() } /** Price for which the updates should be cleared. Must be a fixed fee. */ - @JsonProperty("price_id") fun priceId(priceId: String) = apply { this.priceId = priceId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionUnscheduleFixedFeeQuantityUpdatesBody = SubscriptionUnscheduleFixedFeeQuantityUpdatesBody( checkNotNull(priceId) { "`priceId` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse.kt index 72884eca..c24c7fdf 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse.Builder::class) @NoAutoDetect class SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse = apply { if (!validated) { metadata().validate() @@ -404,50 +453,46 @@ private constructor( subscriptionUnscheduleFixedFeeQuantityUpdatesResponse: SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse ) = apply { - this.metadata = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.metadata - this.id = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.id - this.customer = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.customer - this.plan = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.plan - this.startDate = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.startDate - this.endDate = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.endDate - this.createdAt = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.createdAt - this.currentBillingPeriodStartDate = + metadata = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.metadata + id = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.id + customer = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.customer + plan = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.plan + startDate = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.startDate + endDate = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.endDate + createdAt = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.createdAt + currentBillingPeriodStartDate = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = + currentBillingPeriodEndDate = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.currentBillingPeriodEndDate - this.status = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.status - this.trialInfo = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.trialInfo - this.activePlanPhaseOrder = + status = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.status + trialInfo = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.trialInfo + activePlanPhaseOrder = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = + fixedFeeQuantitySchedule = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = + defaultInvoiceMemo = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.defaultInvoiceMemo - this.autoCollection = - subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.autoCollection - this.netTerms = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.netTerms - this.redeemedCoupon = - subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.redeemedCoupon - this.billingCycleDay = - subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + autoCollection = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.autoCollection + netTerms = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.netTerms + redeemedCoupon = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.redeemedCoupon + billingCycleDay = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse .billingCycleAnchorConfiguration - this.invoicingThreshold = + invoicingThreshold = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.invoicingThreshold - this.priceIntervals = - subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.priceIntervals - this.adjustmentIntervals = + priceIntervals = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.priceIntervals + adjustmentIntervals = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.adjustmentIntervals - this.discountIntervals = + discountIntervals = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.discountIntervals - this.minimumIntervals = + minimumIntervals = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.minimumIntervals - this.maximumIntervals = + maximumIntervals = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.maximumIntervals - additionalProperties( + additionalProperties = subscriptionUnscheduleFixedFeeQuantityUpdatesResponse.additionalProperties - ) + .toMutableMap() } /** @@ -462,13 +507,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -508,8 +551,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -526,30 +567,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -565,8 +598,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -584,8 +615,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -593,14 +622,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -608,8 +633,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -617,8 +640,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -634,8 +655,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -652,8 +671,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -670,15 +687,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -697,8 +710,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -707,8 +718,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -716,8 +725,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -727,8 +734,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -738,8 +743,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -749,8 +752,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -760,8 +761,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -771,26 +770,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse = SubscriptionUnscheduleFixedFeeQuantityUpdatesResponse( metadata, @@ -822,20 +824,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -870,6 +879,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -899,24 +910,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -925,8 +932,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -935,8 +940,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -944,8 +947,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -953,18 +954,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1218,22 +1224,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1300,6 +1319,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1333,20 +1354,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1360,8 +1380,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1371,8 +1389,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1382,8 +1398,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1392,15 +1406,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1416,20 +1426,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1437,6 +1444,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1520,22 +1535,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1603,6 +1631,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1637,21 +1667,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1665,8 +1693,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1676,8 +1702,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1687,8 +1711,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1697,15 +1719,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1721,20 +1739,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1742,6 +1757,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1825,22 +1848,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1905,6 +1941,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1938,20 +1976,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1965,8 +2002,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1976,8 +2011,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1987,8 +2020,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1997,15 +2028,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2021,20 +2048,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2042,6 +2066,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2125,23 +2157,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2212,6 +2259,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2247,21 +2296,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2275,8 +2322,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2286,8 +2331,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2297,8 +2340,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2307,15 +2348,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2331,8 +2368,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2341,18 +2376,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2360,6 +2392,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2444,22 +2484,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2524,6 +2577,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2557,20 +2612,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2584,8 +2637,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2595,8 +2646,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2606,8 +2655,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2616,15 +2663,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2640,20 +2683,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2661,6 +2701,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2763,18 +2811,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2819,6 +2868,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2845,10 +2896,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2865,8 +2917,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2879,8 +2929,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2893,24 +2941,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3118,21 +3169,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3178,6 +3240,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3209,21 +3273,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3233,8 +3295,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3243,8 +3303,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3253,8 +3311,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3262,8 +3318,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3273,8 +3327,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3282,12 +3334,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3295,6 +3346,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3376,21 +3435,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3438,6 +3508,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3469,21 +3541,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3497,8 +3567,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3507,8 +3575,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3517,8 +3583,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3526,8 +3590,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3537,8 +3599,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3546,12 +3606,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3559,6 +3618,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3640,21 +3707,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3706,6 +3784,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3737,20 +3817,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3766,8 +3844,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3776,8 +3852,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3786,8 +3860,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3795,8 +3867,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3806,8 +3876,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3815,12 +3883,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3828,6 +3895,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3910,19 +3985,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3944,6 +4026,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3971,53 +4055,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4046,20 +4127,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4107,6 +4197,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4136,20 +4228,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4158,8 +4248,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4167,8 +4255,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4178,8 +4264,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4195,26 +4279,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4249,19 +4336,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4281,23 +4369,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4318,20 +4411,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4379,6 +4481,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4408,20 +4512,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4430,8 +4532,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4439,8 +4539,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4450,8 +4548,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4467,26 +4563,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4520,23 +4619,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5091,6 +5204,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5127,21 +5242,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5154,8 +5267,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5170,8 +5281,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5632,8 +5741,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5641,8 +5748,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5659,8 +5764,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5678,8 +5781,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5697,26 +5798,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5731,18 +5835,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5759,6 +5868,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5784,41 +5895,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5826,6 +5931,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5871,18 +5984,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5900,6 +6018,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5925,46 +6045,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6055,16 +6174,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6074,6 +6194,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6095,30 +6217,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnschedulePendingPlanChangesResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnschedulePendingPlanChangesResponse.kt index 21697a37..d5bc8663 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnschedulePendingPlanChangesResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUnschedulePendingPlanChangesResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionUnschedulePendingPlanChangesResponse.Builder::class) @NoAutoDetect class SubscriptionUnschedulePendingPlanChangesResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionUnschedulePendingPlanChangesResponse = apply { if (!validated) { metadata().validate() @@ -404,45 +453,39 @@ private constructor( subscriptionUnschedulePendingPlanChangesResponse: SubscriptionUnschedulePendingPlanChangesResponse ) = apply { - this.metadata = subscriptionUnschedulePendingPlanChangesResponse.metadata - this.id = subscriptionUnschedulePendingPlanChangesResponse.id - this.customer = subscriptionUnschedulePendingPlanChangesResponse.customer - this.plan = subscriptionUnschedulePendingPlanChangesResponse.plan - this.startDate = subscriptionUnschedulePendingPlanChangesResponse.startDate - this.endDate = subscriptionUnschedulePendingPlanChangesResponse.endDate - this.createdAt = subscriptionUnschedulePendingPlanChangesResponse.createdAt - this.currentBillingPeriodStartDate = + metadata = subscriptionUnschedulePendingPlanChangesResponse.metadata + id = subscriptionUnschedulePendingPlanChangesResponse.id + customer = subscriptionUnschedulePendingPlanChangesResponse.customer + plan = subscriptionUnschedulePendingPlanChangesResponse.plan + startDate = subscriptionUnschedulePendingPlanChangesResponse.startDate + endDate = subscriptionUnschedulePendingPlanChangesResponse.endDate + createdAt = subscriptionUnschedulePendingPlanChangesResponse.createdAt + currentBillingPeriodStartDate = subscriptionUnschedulePendingPlanChangesResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = + currentBillingPeriodEndDate = subscriptionUnschedulePendingPlanChangesResponse.currentBillingPeriodEndDate - this.status = subscriptionUnschedulePendingPlanChangesResponse.status - this.trialInfo = subscriptionUnschedulePendingPlanChangesResponse.trialInfo - this.activePlanPhaseOrder = + status = subscriptionUnschedulePendingPlanChangesResponse.status + trialInfo = subscriptionUnschedulePendingPlanChangesResponse.trialInfo + activePlanPhaseOrder = subscriptionUnschedulePendingPlanChangesResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = + fixedFeeQuantitySchedule = subscriptionUnschedulePendingPlanChangesResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = - subscriptionUnschedulePendingPlanChangesResponse.defaultInvoiceMemo - this.autoCollection = subscriptionUnschedulePendingPlanChangesResponse.autoCollection - this.netTerms = subscriptionUnschedulePendingPlanChangesResponse.netTerms - this.redeemedCoupon = subscriptionUnschedulePendingPlanChangesResponse.redeemedCoupon - this.billingCycleDay = subscriptionUnschedulePendingPlanChangesResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + defaultInvoiceMemo = subscriptionUnschedulePendingPlanChangesResponse.defaultInvoiceMemo + autoCollection = subscriptionUnschedulePendingPlanChangesResponse.autoCollection + netTerms = subscriptionUnschedulePendingPlanChangesResponse.netTerms + redeemedCoupon = subscriptionUnschedulePendingPlanChangesResponse.redeemedCoupon + billingCycleDay = subscriptionUnschedulePendingPlanChangesResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionUnschedulePendingPlanChangesResponse.billingCycleAnchorConfiguration - this.invoicingThreshold = - subscriptionUnschedulePendingPlanChangesResponse.invoicingThreshold - this.priceIntervals = subscriptionUnschedulePendingPlanChangesResponse.priceIntervals - this.adjustmentIntervals = + invoicingThreshold = subscriptionUnschedulePendingPlanChangesResponse.invoicingThreshold + priceIntervals = subscriptionUnschedulePendingPlanChangesResponse.priceIntervals + adjustmentIntervals = subscriptionUnschedulePendingPlanChangesResponse.adjustmentIntervals - this.discountIntervals = - subscriptionUnschedulePendingPlanChangesResponse.discountIntervals - this.minimumIntervals = - subscriptionUnschedulePendingPlanChangesResponse.minimumIntervals - this.maximumIntervals = - subscriptionUnschedulePendingPlanChangesResponse.maximumIntervals - additionalProperties( - subscriptionUnschedulePendingPlanChangesResponse.additionalProperties - ) + discountIntervals = subscriptionUnschedulePendingPlanChangesResponse.discountIntervals + minimumIntervals = subscriptionUnschedulePendingPlanChangesResponse.minimumIntervals + maximumIntervals = subscriptionUnschedulePendingPlanChangesResponse.maximumIntervals + additionalProperties = + subscriptionUnschedulePendingPlanChangesResponse.additionalProperties.toMutableMap() } /** @@ -457,13 +500,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -503,8 +544,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -521,30 +560,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -560,8 +591,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -579,8 +608,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -588,14 +615,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -603,8 +626,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -612,8 +633,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -629,8 +648,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -647,8 +664,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -665,15 +680,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -692,8 +703,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -702,8 +711,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -711,8 +718,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -722,8 +727,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -733,8 +736,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -744,8 +745,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -755,8 +754,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -766,26 +763,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionUnschedulePendingPlanChangesResponse = SubscriptionUnschedulePendingPlanChangesResponse( metadata, @@ -817,20 +817,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -865,6 +872,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -894,24 +903,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -920,8 +925,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -930,8 +933,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -939,8 +940,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -948,18 +947,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1213,22 +1217,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1295,6 +1312,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1328,20 +1347,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1355,8 +1373,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1366,8 +1382,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1377,8 +1391,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1387,15 +1399,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1411,20 +1419,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1432,6 +1437,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1515,22 +1528,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1598,6 +1624,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1632,21 +1660,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1660,8 +1686,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1671,8 +1695,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1682,8 +1704,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1692,15 +1712,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1716,20 +1732,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1737,6 +1750,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1820,22 +1841,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1900,6 +1934,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1933,20 +1969,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1960,8 +1995,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1971,8 +2004,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1982,8 +2013,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1992,15 +2021,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2016,20 +2041,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2037,6 +2059,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2120,23 +2150,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2207,6 +2252,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2242,21 +2289,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2270,8 +2315,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2281,8 +2324,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2292,8 +2333,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2302,15 +2341,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2326,8 +2361,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2336,18 +2369,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2355,6 +2385,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2439,22 +2477,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2519,6 +2570,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2552,20 +2605,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2579,8 +2630,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2590,8 +2639,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2601,8 +2648,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2611,15 +2656,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2635,20 +2676,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2656,6 +2694,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2758,18 +2804,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2814,6 +2861,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2840,10 +2889,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2860,8 +2910,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2874,8 +2922,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2888,24 +2934,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3113,21 +3162,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3173,6 +3233,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3204,21 +3266,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3228,8 +3288,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3238,8 +3296,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3248,8 +3304,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3257,8 +3311,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3268,8 +3320,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3277,12 +3327,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3290,6 +3339,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3371,21 +3428,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3433,6 +3501,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3464,21 +3534,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3492,8 +3560,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3502,8 +3568,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3512,8 +3576,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3521,8 +3583,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3532,8 +3592,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3541,12 +3599,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3554,6 +3611,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3635,21 +3700,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3701,6 +3777,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3732,20 +3810,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3761,8 +3837,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3771,8 +3845,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3781,8 +3853,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3790,8 +3860,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3801,8 +3869,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3810,12 +3876,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3823,6 +3888,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3905,19 +3978,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3939,6 +4019,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3966,53 +4048,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4041,20 +4120,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4102,6 +4190,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4131,20 +4221,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4153,8 +4241,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4162,8 +4248,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4173,8 +4257,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4190,26 +4272,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4244,19 +4329,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4276,23 +4362,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4313,20 +4404,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4374,6 +4474,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4403,20 +4505,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4425,8 +4525,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4434,8 +4532,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4445,8 +4541,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4462,26 +4556,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4515,23 +4612,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5086,6 +5197,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5122,21 +5235,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5149,8 +5260,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5165,8 +5274,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5627,8 +5734,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5636,8 +5741,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5654,8 +5757,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5673,8 +5774,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5692,26 +5791,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5726,18 +5828,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5754,6 +5861,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5779,41 +5888,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5821,6 +5924,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5866,18 +5977,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5895,6 +6011,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5920,46 +6038,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6050,16 +6167,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6069,6 +6187,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6090,30 +6210,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityParams.kt index 2b27240b..5bff02a7 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityParams.kt @@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField @@ -14,6 +13,7 @@ import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.LocalDate @@ -70,35 +70,38 @@ constructor( } } - @JsonDeserialize(builder = SubscriptionUpdateFixedFeeQuantityBody.Builder::class) @NoAutoDetect class SubscriptionUpdateFixedFeeQuantityBody + @JsonCreator internal constructor( - private val priceId: String?, - private val quantity: Double?, - private val changeOption: ChangeOption?, - private val effectiveDate: LocalDate?, - private val additionalProperties: Map, + @JsonProperty("price_id") private val priceId: String, + @JsonProperty("quantity") private val quantity: Double, + @JsonProperty("change_option") private val changeOption: ChangeOption?, + @JsonProperty("effective_date") private val effectiveDate: LocalDate?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** Price for which the quantity should be updated. Must be a fixed fee. */ - @JsonProperty("price_id") fun priceId(): String? = priceId + @JsonProperty("price_id") fun priceId(): String = priceId - @JsonProperty("quantity") fun quantity(): Double? = quantity + @JsonProperty("quantity") fun quantity(): Double = quantity /** * Determines when the change takes effect. Note that if `effective_date` is specified, this * defaults to `effective_date`. Otherwise, this defaults to `immediate` unless it's * explicitly set to `upcoming_invoice. */ - @JsonProperty("change_option") fun changeOption(): ChangeOption? = changeOption + @JsonProperty("change_option") + fun changeOption(): Optional = Optional.ofNullable(changeOption) /** * The date that the quantity change should take effect, localized to the customer's * timezone. Ifthis parameter is not passed in, the quantity change is effective according * to `change_option`. */ - @JsonProperty("effective_date") fun effectiveDate(): LocalDate? = effectiveDate + @JsonProperty("effective_date") + fun effectiveDate(): Optional = Optional.ofNullable(effectiveDate) @JsonAnyGetter @ExcludeMissing @@ -123,18 +126,17 @@ constructor( internal fun from( subscriptionUpdateFixedFeeQuantityBody: SubscriptionUpdateFixedFeeQuantityBody ) = apply { - this.priceId = subscriptionUpdateFixedFeeQuantityBody.priceId - this.quantity = subscriptionUpdateFixedFeeQuantityBody.quantity - this.changeOption = subscriptionUpdateFixedFeeQuantityBody.changeOption - this.effectiveDate = subscriptionUpdateFixedFeeQuantityBody.effectiveDate - additionalProperties(subscriptionUpdateFixedFeeQuantityBody.additionalProperties) + priceId = subscriptionUpdateFixedFeeQuantityBody.priceId + quantity = subscriptionUpdateFixedFeeQuantityBody.quantity + changeOption = subscriptionUpdateFixedFeeQuantityBody.changeOption + effectiveDate = subscriptionUpdateFixedFeeQuantityBody.effectiveDate + additionalProperties = + subscriptionUpdateFixedFeeQuantityBody.additionalProperties.toMutableMap() } /** Price for which the quantity should be updated. Must be a fixed fee. */ - @JsonProperty("price_id") fun priceId(priceId: String) = apply { this.priceId = priceId } - @JsonProperty("quantity") fun quantity(quantity: Double) = apply { this.quantity = quantity } /** @@ -142,7 +144,6 @@ constructor( * this defaults to `effective_date`. Otherwise, this defaults to `immediate` unless * it's explicitly set to `upcoming_invoice. */ - @JsonProperty("change_option") fun changeOption(changeOption: ChangeOption) = apply { this.changeOption = changeOption } @@ -152,25 +153,29 @@ constructor( * timezone. Ifthis parameter is not passed in, the quantity change is effective * according to `change_option`. */ - @JsonProperty("effective_date") fun effectiveDate(effectiveDate: LocalDate) = apply { this.effectiveDate = effectiveDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionUpdateFixedFeeQuantityBody = SubscriptionUpdateFixedFeeQuantityBody( checkNotNull(priceId) { "`priceId` is required but was not set" }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityResponse.kt index 3786669e..a796dbe1 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionUpdateFixedFeeQuantityResponse.Builder::class) @NoAutoDetect class SubscriptionUpdateFixedFeeQuantityResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionUpdateFixedFeeQuantityResponse = apply { if (!validated) { metadata().validate() @@ -403,38 +452,37 @@ private constructor( internal fun from( subscriptionUpdateFixedFeeQuantityResponse: SubscriptionUpdateFixedFeeQuantityResponse ) = apply { - this.metadata = subscriptionUpdateFixedFeeQuantityResponse.metadata - this.id = subscriptionUpdateFixedFeeQuantityResponse.id - this.customer = subscriptionUpdateFixedFeeQuantityResponse.customer - this.plan = subscriptionUpdateFixedFeeQuantityResponse.plan - this.startDate = subscriptionUpdateFixedFeeQuantityResponse.startDate - this.endDate = subscriptionUpdateFixedFeeQuantityResponse.endDate - this.createdAt = subscriptionUpdateFixedFeeQuantityResponse.createdAt - this.currentBillingPeriodStartDate = + metadata = subscriptionUpdateFixedFeeQuantityResponse.metadata + id = subscriptionUpdateFixedFeeQuantityResponse.id + customer = subscriptionUpdateFixedFeeQuantityResponse.customer + plan = subscriptionUpdateFixedFeeQuantityResponse.plan + startDate = subscriptionUpdateFixedFeeQuantityResponse.startDate + endDate = subscriptionUpdateFixedFeeQuantityResponse.endDate + createdAt = subscriptionUpdateFixedFeeQuantityResponse.createdAt + currentBillingPeriodStartDate = subscriptionUpdateFixedFeeQuantityResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = + currentBillingPeriodEndDate = subscriptionUpdateFixedFeeQuantityResponse.currentBillingPeriodEndDate - this.status = subscriptionUpdateFixedFeeQuantityResponse.status - this.trialInfo = subscriptionUpdateFixedFeeQuantityResponse.trialInfo - this.activePlanPhaseOrder = - subscriptionUpdateFixedFeeQuantityResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = + status = subscriptionUpdateFixedFeeQuantityResponse.status + trialInfo = subscriptionUpdateFixedFeeQuantityResponse.trialInfo + activePlanPhaseOrder = subscriptionUpdateFixedFeeQuantityResponse.activePlanPhaseOrder + fixedFeeQuantitySchedule = subscriptionUpdateFixedFeeQuantityResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = subscriptionUpdateFixedFeeQuantityResponse.defaultInvoiceMemo - this.autoCollection = subscriptionUpdateFixedFeeQuantityResponse.autoCollection - this.netTerms = subscriptionUpdateFixedFeeQuantityResponse.netTerms - this.redeemedCoupon = subscriptionUpdateFixedFeeQuantityResponse.redeemedCoupon - this.billingCycleDay = subscriptionUpdateFixedFeeQuantityResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + defaultInvoiceMemo = subscriptionUpdateFixedFeeQuantityResponse.defaultInvoiceMemo + autoCollection = subscriptionUpdateFixedFeeQuantityResponse.autoCollection + netTerms = subscriptionUpdateFixedFeeQuantityResponse.netTerms + redeemedCoupon = subscriptionUpdateFixedFeeQuantityResponse.redeemedCoupon + billingCycleDay = subscriptionUpdateFixedFeeQuantityResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionUpdateFixedFeeQuantityResponse.billingCycleAnchorConfiguration - this.invoicingThreshold = subscriptionUpdateFixedFeeQuantityResponse.invoicingThreshold - this.priceIntervals = subscriptionUpdateFixedFeeQuantityResponse.priceIntervals - this.adjustmentIntervals = - subscriptionUpdateFixedFeeQuantityResponse.adjustmentIntervals - this.discountIntervals = subscriptionUpdateFixedFeeQuantityResponse.discountIntervals - this.minimumIntervals = subscriptionUpdateFixedFeeQuantityResponse.minimumIntervals - this.maximumIntervals = subscriptionUpdateFixedFeeQuantityResponse.maximumIntervals - additionalProperties(subscriptionUpdateFixedFeeQuantityResponse.additionalProperties) + invoicingThreshold = subscriptionUpdateFixedFeeQuantityResponse.invoicingThreshold + priceIntervals = subscriptionUpdateFixedFeeQuantityResponse.priceIntervals + adjustmentIntervals = subscriptionUpdateFixedFeeQuantityResponse.adjustmentIntervals + discountIntervals = subscriptionUpdateFixedFeeQuantityResponse.discountIntervals + minimumIntervals = subscriptionUpdateFixedFeeQuantityResponse.minimumIntervals + maximumIntervals = subscriptionUpdateFixedFeeQuantityResponse.maximumIntervals + additionalProperties = + subscriptionUpdateFixedFeeQuantityResponse.additionalProperties.toMutableMap() } /** @@ -449,13 +497,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -495,8 +541,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -513,30 +557,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -552,8 +588,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -571,8 +605,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -580,14 +612,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -595,8 +623,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -604,8 +630,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -621,8 +645,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -639,8 +661,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -657,15 +677,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -684,8 +700,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -694,8 +708,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -703,8 +715,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -714,8 +724,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -725,8 +733,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -736,8 +742,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -747,8 +751,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -758,26 +760,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionUpdateFixedFeeQuantityResponse = SubscriptionUpdateFixedFeeQuantityResponse( metadata, @@ -809,20 +814,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -857,6 +869,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -886,24 +900,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -912,8 +922,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -922,8 +930,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -931,8 +937,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -940,18 +944,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1205,22 +1214,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1287,6 +1309,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1320,20 +1344,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1347,8 +1370,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1358,8 +1379,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1369,8 +1388,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1379,15 +1396,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1403,20 +1416,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1424,6 +1434,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1507,22 +1525,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1590,6 +1621,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1624,21 +1657,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1652,8 +1683,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1663,8 +1692,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1674,8 +1701,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1684,15 +1709,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1708,20 +1729,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1729,6 +1747,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1812,22 +1838,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1892,6 +1931,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1925,20 +1966,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1952,8 +1992,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1963,8 +2001,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1974,8 +2010,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1984,15 +2018,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2008,20 +2038,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2029,6 +2056,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2112,23 +2147,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2199,6 +2249,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2234,21 +2286,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2262,8 +2312,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2273,8 +2321,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2284,8 +2330,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2294,15 +2338,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2318,8 +2358,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2328,18 +2366,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2347,6 +2382,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2431,22 +2474,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2511,6 +2567,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2544,20 +2602,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2571,8 +2627,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2582,8 +2636,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2593,8 +2645,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2603,15 +2653,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2627,20 +2673,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2648,6 +2691,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2750,18 +2801,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2806,6 +2858,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2832,10 +2886,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2852,8 +2907,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2866,8 +2919,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2880,24 +2931,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3105,21 +3159,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3165,6 +3230,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3196,21 +3263,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3220,8 +3285,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3230,8 +3293,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3240,8 +3301,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3249,8 +3308,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3260,8 +3317,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3269,12 +3324,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3282,6 +3336,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3363,21 +3425,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3425,6 +3498,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3456,21 +3531,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3484,8 +3557,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3494,8 +3565,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3504,8 +3573,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3513,8 +3580,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3524,8 +3589,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3533,12 +3596,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3546,6 +3608,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3627,21 +3697,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3693,6 +3774,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3724,20 +3807,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3753,8 +3834,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3763,8 +3842,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3773,8 +3850,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3782,8 +3857,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3793,8 +3866,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3802,12 +3873,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3815,6 +3885,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3897,19 +3975,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3931,6 +4016,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3958,53 +4045,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4033,20 +4117,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4094,6 +4187,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4123,20 +4218,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4145,8 +4238,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4154,8 +4245,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4165,8 +4254,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4182,26 +4269,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4236,19 +4326,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4268,23 +4359,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4305,20 +4401,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4366,6 +4471,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4395,20 +4502,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4417,8 +4522,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4426,8 +4529,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4437,8 +4538,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4454,26 +4553,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4507,23 +4609,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5078,6 +5194,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5114,21 +5232,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5141,8 +5257,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5157,8 +5271,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5619,8 +5731,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5628,8 +5738,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5646,8 +5754,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5665,8 +5771,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5684,26 +5788,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5718,18 +5825,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5746,6 +5858,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5771,41 +5885,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5813,6 +5921,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5858,18 +5974,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5887,6 +6008,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5912,46 +6035,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6042,16 +6164,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6061,6 +6184,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6082,30 +6207,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateParams.kt index 6401cc6c..2f4182a3 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateParams.kt @@ -4,13 +4,14 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects import java.util.Optional @@ -69,16 +70,17 @@ constructor( } } - @JsonDeserialize(builder = SubscriptionUpdateBody.Builder::class) @NoAutoDetect class SubscriptionUpdateBody + @JsonCreator internal constructor( - private val autoCollection: Boolean?, - private val defaultInvoiceMemo: String?, - private val invoicingThreshold: String?, - private val metadata: Metadata?, - private val netTerms: Long?, - private val additionalProperties: Map, + @JsonProperty("auto_collection") private val autoCollection: Boolean?, + @JsonProperty("default_invoice_memo") private val defaultInvoiceMemo: String?, + @JsonProperty("invoicing_threshold") private val invoicingThreshold: String?, + @JsonProperty("metadata") private val metadata: Metadata?, + @JsonProperty("net_terms") private val netTerms: Long?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** @@ -86,34 +88,37 @@ constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. */ - @JsonProperty("auto_collection") fun autoCollection(): Boolean? = autoCollection + @JsonProperty("auto_collection") + fun autoCollection(): Optional = Optional.ofNullable(autoCollection) /** * Determines the default memo on this subscription's invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") fun defaultInvoiceMemo(): String? = defaultInvoiceMemo + @JsonProperty("default_invoice_memo") + fun defaultInvoiceMemo(): Optional = Optional.ofNullable(defaultInvoiceMemo) /** * When this subscription's accrued usage reaches this threshold, an invoice will be issued * for the subscription. If not specified, invoices will only be issued at the end of the * billing period. */ - @JsonProperty("invoicing_threshold") fun invoicingThreshold(): String? = invoicingThreshold + @JsonProperty("invoicing_threshold") + fun invoicingThreshold(): Optional = Optional.ofNullable(invoicingThreshold) /** * User-specified key/value pairs for the resource. Individual keys can be removed by * setting the value to `null`, and the entire metadata mapping can be cleared by setting * `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(): Metadata? = metadata + @JsonProperty("metadata") fun metadata(): Optional = Optional.ofNullable(metadata) /** * Determines the difference between the invoice issue date for subscription invoices as the * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") fun netTerms(): Long? = netTerms + @JsonProperty("net_terms") fun netTerms(): Optional = Optional.ofNullable(netTerms) @JsonAnyGetter @ExcludeMissing @@ -137,12 +142,12 @@ constructor( @JvmSynthetic internal fun from(subscriptionUpdateBody: SubscriptionUpdateBody) = apply { - this.autoCollection = subscriptionUpdateBody.autoCollection - this.defaultInvoiceMemo = subscriptionUpdateBody.defaultInvoiceMemo - this.invoicingThreshold = subscriptionUpdateBody.invoicingThreshold - this.metadata = subscriptionUpdateBody.metadata - this.netTerms = subscriptionUpdateBody.netTerms - additionalProperties(subscriptionUpdateBody.additionalProperties) + autoCollection = subscriptionUpdateBody.autoCollection + defaultInvoiceMemo = subscriptionUpdateBody.defaultInvoiceMemo + invoicingThreshold = subscriptionUpdateBody.invoicingThreshold + metadata = subscriptionUpdateBody.metadata + netTerms = subscriptionUpdateBody.netTerms + additionalProperties = subscriptionUpdateBody.additionalProperties.toMutableMap() } /** @@ -150,7 +155,6 @@ constructor( * charged with the saved payment method on the due date. This property defaults to the * plan's behavior. */ - @JsonProperty("auto_collection") fun autoCollection(autoCollection: Boolean) = apply { this.autoCollection = autoCollection } @@ -159,7 +163,6 @@ constructor( * Determines the default memo on this subscription's invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") fun defaultInvoiceMemo(defaultInvoiceMemo: String) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -169,7 +172,6 @@ constructor( * issued for the subscription. If not specified, invoices will only be issued at the * end of the billing period. */ - @JsonProperty("invoicing_threshold") fun invoicingThreshold(invoicingThreshold: String) = apply { this.invoicingThreshold = invoicingThreshold } @@ -179,7 +181,6 @@ constructor( * setting the value to `null`, and the entire metadata mapping can be cleared by * setting `metadata` to `null`. */ - @JsonProperty("metadata") fun metadata(metadata: Metadata) = apply { this.metadata = metadata } /** @@ -188,23 +189,27 @@ constructor( * issue, whereas a value of `30` represents that the customer has a month to pay the * invoice. */ - @JsonProperty("net_terms") fun netTerms(netTerms: Long) = apply { this.netTerms = netTerms } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionUpdateBody = SubscriptionUpdateBody( autoCollection, @@ -447,11 +452,12 @@ constructor( * the value to `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { @JsonAnyGetter @@ -471,23 +477,28 @@ constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateTrialParams.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateTrialParams.kt index 70b79245..646514d1 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateTrialParams.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateTrialParams.kt @@ -23,6 +23,7 @@ import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow import com.withorb.api.core.http.Headers import com.withorb.api.core.http.QueryParams +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -71,26 +72,27 @@ constructor( } } - @JsonDeserialize(builder = SubscriptionUpdateTrialBody.Builder::class) @NoAutoDetect class SubscriptionUpdateTrialBody + @JsonCreator internal constructor( - private val trialEndDate: TrialEndDate?, - private val shift: Boolean?, - private val additionalProperties: Map, + @JsonProperty("trial_end_date") private val trialEndDate: TrialEndDate, + @JsonProperty("shift") private val shift: Boolean?, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { /** * The new date that the trial should end, or the literal string `immediate` to end the * trial immediately. */ - @JsonProperty("trial_end_date") fun trialEndDate(): TrialEndDate? = trialEndDate + @JsonProperty("trial_end_date") fun trialEndDate(): TrialEndDate = trialEndDate /** * If true, shifts subsequent price and adjustment intervals (preserving their durations, * but adjusting their absolute dates). */ - @JsonProperty("shift") fun shift(): Boolean? = shift + @JsonProperty("shift") fun shift(): Optional = Optional.ofNullable(shift) @JsonAnyGetter @ExcludeMissing @@ -111,16 +113,16 @@ constructor( @JvmSynthetic internal fun from(subscriptionUpdateTrialBody: SubscriptionUpdateTrialBody) = apply { - this.trialEndDate = subscriptionUpdateTrialBody.trialEndDate - this.shift = subscriptionUpdateTrialBody.shift - additionalProperties(subscriptionUpdateTrialBody.additionalProperties) + trialEndDate = subscriptionUpdateTrialBody.trialEndDate + shift = subscriptionUpdateTrialBody.shift + additionalProperties = + subscriptionUpdateTrialBody.additionalProperties.toMutableMap() } /** * The new date that the trial should end, or the literal string `immediate` to end the * trial immediately. */ - @JsonProperty("trial_end_date") fun trialEndDate(trialEndDate: TrialEndDate) = apply { this.trialEndDate = trialEndDate } @@ -129,22 +131,27 @@ constructor( * If true, shifts subsequent price and adjustment intervals (preserving their * durations, but adjusting their absolute dates). */ - @JsonProperty("shift") fun shift(shift: Boolean) = apply { this.shift = shift } + fun shift(shift: Boolean) = apply { this.shift = shift } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionUpdateTrialBody = SubscriptionUpdateTrialBody( checkNotNull(trialEndDate) { "`trialEndDate` is required but was not set" }, @@ -369,8 +376,6 @@ constructor( private val _json: JsonValue? = null, ) { - private var validated: Boolean = false - fun offsetDateTime(): Optional = Optional.ofNullable(offsetDateTime) fun unionMember1(): Optional = Optional.ofNullable(unionMember1) @@ -393,15 +398,6 @@ constructor( } } - fun validate(): TrialEndDate = apply { - if (!validated) { - if (offsetDateTime == null && unionMember1 == null) { - throw OrbInvalidDataException("Unknown TrialEndDate: $_json") - } - validated = true - } - } - override fun equals(other: Any?): Boolean { if (this === other) { return true diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateTrialResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateTrialResponse.kt index aa7b15f9..f021a3f3 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateTrialResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUpdateTrialResponse.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -29,40 +30,86 @@ import java.util.Objects import java.util.Optional import kotlin.jvm.optionals.getOrNull -@JsonDeserialize(builder = SubscriptionUpdateTrialResponse.Builder::class) @NoAutoDetect class SubscriptionUpdateTrialResponse +@JsonCreator private constructor( - private val metadata: JsonField, - private val id: JsonField, - private val customer: JsonField, - private val plan: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val createdAt: JsonField, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val status: JsonField, - private val trialInfo: JsonField, - private val activePlanPhaseOrder: JsonField, - private val fixedFeeQuantitySchedule: JsonField>, - private val defaultInvoiceMemo: JsonField, - private val autoCollection: JsonField, - private val netTerms: JsonField, - private val redeemedCoupon: JsonField, - private val billingCycleDay: JsonField, - private val billingCycleAnchorConfiguration: JsonField, - private val invoicingThreshold: JsonField, - private val priceIntervals: JsonField>, - private val adjustmentIntervals: JsonField>, - private val discountIntervals: JsonField>, - private val minimumIntervals: JsonField>, - private val maximumIntervals: JsonField>, - private val additionalProperties: Map, + @JsonProperty("metadata") + @ExcludeMissing + private val metadata: JsonField = JsonMissing.of(), + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("customer") + @ExcludeMissing + private val customer: JsonField = JsonMissing.of(), + @JsonProperty("plan") @ExcludeMissing private val plan: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("created_at") + @ExcludeMissing + private val createdAt: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonProperty("status") + @ExcludeMissing + private val status: JsonField = JsonMissing.of(), + @JsonProperty("trial_info") + @ExcludeMissing + private val trialInfo: JsonField = JsonMissing.of(), + @JsonProperty("active_plan_phase_order") + @ExcludeMissing + private val activePlanPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_schedule") + @ExcludeMissing + private val fixedFeeQuantitySchedule: JsonField> = + JsonMissing.of(), + @JsonProperty("default_invoice_memo") + @ExcludeMissing + private val defaultInvoiceMemo: JsonField = JsonMissing.of(), + @JsonProperty("auto_collection") + @ExcludeMissing + private val autoCollection: JsonField = JsonMissing.of(), + @JsonProperty("net_terms") + @ExcludeMissing + private val netTerms: JsonField = JsonMissing.of(), + @JsonProperty("redeemed_coupon") + @ExcludeMissing + private val redeemedCoupon: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_anchor_configuration") + @ExcludeMissing + private val billingCycleAnchorConfiguration: JsonField = + JsonMissing.of(), + @JsonProperty("invoicing_threshold") + @ExcludeMissing + private val invoicingThreshold: JsonField = JsonMissing.of(), + @JsonProperty("price_intervals") + @ExcludeMissing + private val priceIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("adjustment_intervals") + @ExcludeMissing + private val adjustmentIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("discount_intervals") + @ExcludeMissing + private val discountIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_intervals") + @ExcludeMissing + private val minimumIntervals: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_intervals") + @ExcludeMissing + private val maximumIntervals: JsonField> = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * User specified key-value pairs for the resource. If not present, this defaults to an empty * dictionary. Individual keys can be removed by setting the value to `null`, and the entire @@ -330,6 +377,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): SubscriptionUpdateTrialResponse = apply { if (!validated) { metadata().validate() @@ -402,36 +451,36 @@ private constructor( @JvmSynthetic internal fun from(subscriptionUpdateTrialResponse: SubscriptionUpdateTrialResponse) = apply { - this.metadata = subscriptionUpdateTrialResponse.metadata - this.id = subscriptionUpdateTrialResponse.id - this.customer = subscriptionUpdateTrialResponse.customer - this.plan = subscriptionUpdateTrialResponse.plan - this.startDate = subscriptionUpdateTrialResponse.startDate - this.endDate = subscriptionUpdateTrialResponse.endDate - this.createdAt = subscriptionUpdateTrialResponse.createdAt - this.currentBillingPeriodStartDate = + metadata = subscriptionUpdateTrialResponse.metadata + id = subscriptionUpdateTrialResponse.id + customer = subscriptionUpdateTrialResponse.customer + plan = subscriptionUpdateTrialResponse.plan + startDate = subscriptionUpdateTrialResponse.startDate + endDate = subscriptionUpdateTrialResponse.endDate + createdAt = subscriptionUpdateTrialResponse.createdAt + currentBillingPeriodStartDate = subscriptionUpdateTrialResponse.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = + currentBillingPeriodEndDate = subscriptionUpdateTrialResponse.currentBillingPeriodEndDate - this.status = subscriptionUpdateTrialResponse.status - this.trialInfo = subscriptionUpdateTrialResponse.trialInfo - this.activePlanPhaseOrder = subscriptionUpdateTrialResponse.activePlanPhaseOrder - this.fixedFeeQuantitySchedule = - subscriptionUpdateTrialResponse.fixedFeeQuantitySchedule - this.defaultInvoiceMemo = subscriptionUpdateTrialResponse.defaultInvoiceMemo - this.autoCollection = subscriptionUpdateTrialResponse.autoCollection - this.netTerms = subscriptionUpdateTrialResponse.netTerms - this.redeemedCoupon = subscriptionUpdateTrialResponse.redeemedCoupon - this.billingCycleDay = subscriptionUpdateTrialResponse.billingCycleDay - this.billingCycleAnchorConfiguration = + status = subscriptionUpdateTrialResponse.status + trialInfo = subscriptionUpdateTrialResponse.trialInfo + activePlanPhaseOrder = subscriptionUpdateTrialResponse.activePlanPhaseOrder + fixedFeeQuantitySchedule = subscriptionUpdateTrialResponse.fixedFeeQuantitySchedule + defaultInvoiceMemo = subscriptionUpdateTrialResponse.defaultInvoiceMemo + autoCollection = subscriptionUpdateTrialResponse.autoCollection + netTerms = subscriptionUpdateTrialResponse.netTerms + redeemedCoupon = subscriptionUpdateTrialResponse.redeemedCoupon + billingCycleDay = subscriptionUpdateTrialResponse.billingCycleDay + billingCycleAnchorConfiguration = subscriptionUpdateTrialResponse.billingCycleAnchorConfiguration - this.invoicingThreshold = subscriptionUpdateTrialResponse.invoicingThreshold - this.priceIntervals = subscriptionUpdateTrialResponse.priceIntervals - this.adjustmentIntervals = subscriptionUpdateTrialResponse.adjustmentIntervals - this.discountIntervals = subscriptionUpdateTrialResponse.discountIntervals - this.minimumIntervals = subscriptionUpdateTrialResponse.minimumIntervals - this.maximumIntervals = subscriptionUpdateTrialResponse.maximumIntervals - additionalProperties(subscriptionUpdateTrialResponse.additionalProperties) + invoicingThreshold = subscriptionUpdateTrialResponse.invoicingThreshold + priceIntervals = subscriptionUpdateTrialResponse.priceIntervals + adjustmentIntervals = subscriptionUpdateTrialResponse.adjustmentIntervals + discountIntervals = subscriptionUpdateTrialResponse.discountIntervals + minimumIntervals = subscriptionUpdateTrialResponse.minimumIntervals + maximumIntervals = subscriptionUpdateTrialResponse.maximumIntervals + additionalProperties = + subscriptionUpdateTrialResponse.additionalProperties.toMutableMap() } /** @@ -446,13 +495,11 @@ private constructor( * empty dictionary. Individual keys can be removed by setting the value to `null`, and the * entire metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonProperty("metadata") - @ExcludeMissing fun metadata(metadata: JsonField) = apply { this.metadata = metadata } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } + fun id(id: JsonField) = apply { this.id = id } /** * A customer is a buyer of your products, and the other party to the billing relationship. @@ -492,8 +539,6 @@ private constructor( * account's timezone. See [Timezone localization](../guides/product-catalog/timezones.md) * for information on what this timezone parameter influences within Orb. */ - @JsonProperty("customer") - @ExcludeMissing fun customer(customer: JsonField) = apply { this.customer = customer } /** @@ -510,30 +555,22 @@ private constructor( * subscription. You can see more about how to configure prices in the * [Price resource](/reference/price). */ - @JsonProperty("plan") - @ExcludeMissing fun plan(plan: JsonField) = apply { this.plan = plan } /** The date Orb starts billing for this subscription. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The date Orb starts billing for this subscription. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } /** The date Orb stops billing for this subscription. */ fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The date Orb stops billing for this subscription. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt)) - @JsonProperty("created_at") - @ExcludeMissing fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt } /** @@ -549,8 +586,6 @@ private constructor( * returned is exactly the beginning of the billing period. Set to null if the subscription * is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -568,8 +603,6 @@ private constructor( * instant returned is not part of the billing period. Set to null for subscriptions that * are not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate(currentBillingPeriodEndDate: JsonField) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate @@ -577,14 +610,10 @@ private constructor( fun status(status: Status) = status(JsonField.of(status)) - @JsonProperty("status") - @ExcludeMissing fun status(status: JsonField) = apply { this.status = status } fun trialInfo(trialInfo: TrialInfo) = trialInfo(JsonField.of(trialInfo)) - @JsonProperty("trial_info") - @ExcludeMissing fun trialInfo(trialInfo: JsonField) = apply { this.trialInfo = trialInfo } /** The current plan phase that is active, only if the subscription's plan has phases. */ @@ -592,8 +621,6 @@ private constructor( activePlanPhaseOrder(JsonField.of(activePlanPhaseOrder)) /** The current plan phase that is active, only if the subscription's plan has phases. */ - @JsonProperty("active_plan_phase_order") - @ExcludeMissing fun activePlanPhaseOrder(activePlanPhaseOrder: JsonField) = apply { this.activePlanPhaseOrder = activePlanPhaseOrder } @@ -601,8 +628,6 @@ private constructor( fun fixedFeeQuantitySchedule(fixedFeeQuantitySchedule: List) = fixedFeeQuantitySchedule(JsonField.of(fixedFeeQuantitySchedule)) - @JsonProperty("fixed_fee_quantity_schedule") - @ExcludeMissing fun fixedFeeQuantitySchedule( fixedFeeQuantitySchedule: JsonField> ) = apply { this.fixedFeeQuantitySchedule = fixedFeeQuantitySchedule } @@ -618,8 +643,6 @@ private constructor( * Determines the default memo on this subscriptions' invoices. Note that if this is not * provided, it is determined by the plan configuration. */ - @JsonProperty("default_invoice_memo") - @ExcludeMissing fun defaultInvoiceMemo(defaultInvoiceMemo: JsonField) = apply { this.defaultInvoiceMemo = defaultInvoiceMemo } @@ -636,8 +659,6 @@ private constructor( * with the saved payment method on the due date. This property defaults to the plan's * behavior. If null, defaults to the customer's setting. */ - @JsonProperty("auto_collection") - @ExcludeMissing fun autoCollection(autoCollection: JsonField) = apply { this.autoCollection = autoCollection } @@ -654,15 +675,11 @@ private constructor( * date that they are due. A value of `0` here represents that the invoice is due on issue, * whereas a value of `30` represents that the customer has a month to pay the invoice. */ - @JsonProperty("net_terms") - @ExcludeMissing fun netTerms(netTerms: JsonField) = apply { this.netTerms = netTerms } fun redeemedCoupon(redeemedCoupon: RedeemedCoupon) = redeemedCoupon(JsonField.of(redeemedCoupon)) - @JsonProperty("redeemed_coupon") - @ExcludeMissing fun redeemedCoupon(redeemedCoupon: JsonField) = apply { this.redeemedCoupon = redeemedCoupon } @@ -681,8 +698,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -691,8 +706,6 @@ private constructor( billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration ) = billingCycleAnchorConfiguration(JsonField.of(billingCycleAnchorConfiguration)) - @JsonProperty("billing_cycle_anchor_configuration") - @ExcludeMissing fun billingCycleAnchorConfiguration( billingCycleAnchorConfiguration: JsonField ) = apply { this.billingCycleAnchorConfiguration = billingCycleAnchorConfiguration } @@ -700,8 +713,6 @@ private constructor( fun invoicingThreshold(invoicingThreshold: String) = invoicingThreshold(JsonField.of(invoicingThreshold)) - @JsonProperty("invoicing_threshold") - @ExcludeMissing fun invoicingThreshold(invoicingThreshold: JsonField) = apply { this.invoicingThreshold = invoicingThreshold } @@ -711,8 +722,6 @@ private constructor( priceIntervals(JsonField.of(priceIntervals)) /** The price intervals for this subscription. */ - @JsonProperty("price_intervals") - @ExcludeMissing fun priceIntervals(priceIntervals: JsonField>) = apply { this.priceIntervals = priceIntervals } @@ -722,8 +731,6 @@ private constructor( adjustmentIntervals(JsonField.of(adjustmentIntervals)) /** The adjustment intervals for this subscription. */ - @JsonProperty("adjustment_intervals") - @ExcludeMissing fun adjustmentIntervals(adjustmentIntervals: JsonField>) = apply { this.adjustmentIntervals = adjustmentIntervals } @@ -733,8 +740,6 @@ private constructor( discountIntervals(JsonField.of(discountIntervals)) /** The discount intervals for this subscription. */ - @JsonProperty("discount_intervals") - @ExcludeMissing fun discountIntervals(discountIntervals: JsonField>) = apply { this.discountIntervals = discountIntervals } @@ -744,8 +749,6 @@ private constructor( minimumIntervals(JsonField.of(minimumIntervals)) /** The minimum intervals for this subscription. */ - @JsonProperty("minimum_intervals") - @ExcludeMissing fun minimumIntervals(minimumIntervals: JsonField>) = apply { this.minimumIntervals = minimumIntervals } @@ -755,26 +758,29 @@ private constructor( maximumIntervals(JsonField.of(maximumIntervals)) /** The maximum intervals for this subscription. */ - @JsonProperty("maximum_intervals") - @ExcludeMissing fun maximumIntervals(maximumIntervals: JsonField>) = apply { this.maximumIntervals = maximumIntervals } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): SubscriptionUpdateTrialResponse = SubscriptionUpdateTrialResponse( metadata, @@ -806,20 +812,27 @@ private constructor( ) } - @JsonDeserialize(builder = AdjustmentInterval.Builder::class) @NoAutoDetect class AdjustmentInterval + @JsonCreator private constructor( - private val id: JsonField, - private val adjustment: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("adjustment") + @ExcludeMissing + private val adjustment: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun adjustment(): Adjustment = adjustment.getRequired("adjustment") @@ -854,6 +867,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AdjustmentInterval = apply { if (!validated) { id() @@ -883,24 +898,20 @@ private constructor( @JvmSynthetic internal fun from(adjustmentInterval: AdjustmentInterval) = apply { - this.id = adjustmentInterval.id - this.adjustment = adjustmentInterval.adjustment - this.startDate = adjustmentInterval.startDate - this.endDate = adjustmentInterval.endDate - this.appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds - additionalProperties(adjustmentInterval.additionalProperties) + id = adjustmentInterval.id + adjustment = adjustmentInterval.adjustment + startDate = adjustmentInterval.startDate + endDate = adjustmentInterval.endDate + appliesToPriceIntervalIds = adjustmentInterval.appliesToPriceIntervalIds + additionalProperties = adjustmentInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun adjustment(adjustment: Adjustment) = adjustment(JsonField.of(adjustment)) - @JsonProperty("adjustment") - @ExcludeMissing fun adjustment(adjustment: JsonField) = apply { this.adjustment = adjustment } @@ -909,8 +920,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the adjustment interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -919,8 +928,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the adjustment interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price interval IDs that this adjustment applies to. */ @@ -928,8 +935,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -937,18 +942,23 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AdjustmentInterval = AdjustmentInterval( id, @@ -1202,22 +1212,35 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountAdjustment.Builder::class) @NoAutoDetect class AmountDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val amountDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1284,6 +1307,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountAdjustment = apply { if (!validated) { id() @@ -1317,20 +1342,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountAdjustment: AmountDiscountAdjustment) = apply { - this.id = amountDiscountAdjustment.id - this.isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = amountDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds - this.reason = amountDiscountAdjustment.reason - this.adjustmentType = amountDiscountAdjustment.adjustmentType - this.amountDiscount = amountDiscountAdjustment.amountDiscount - additionalProperties(amountDiscountAdjustment.additionalProperties) + id = amountDiscountAdjustment.id + isInvoiceLevel = amountDiscountAdjustment.isInvoiceLevel + planPhaseOrder = amountDiscountAdjustment.planPhaseOrder + appliesToPriceIds = amountDiscountAdjustment.appliesToPriceIds + reason = amountDiscountAdjustment.reason + adjustmentType = amountDiscountAdjustment.adjustmentType + amountDiscount = amountDiscountAdjustment.amountDiscount + additionalProperties = + amountDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1344,8 +1368,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1355,8 +1377,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1366,8 +1386,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1376,15 +1394,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1400,20 +1414,17 @@ private constructor( * The amount by which to discount the prices this adjustment applies to in a * given billing period. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1421,6 +1432,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountAdjustment = AmountDiscountAdjustment( id, @@ -1504,22 +1523,35 @@ private constructor( "AmountDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, amountDiscount=$amountDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountAdjustment.Builder::class) @NoAutoDetect class PercentageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val percentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1587,6 +1619,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountAdjustment = apply { if (!validated) { id() @@ -1621,21 +1655,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountAdjustment: PercentageDiscountAdjustment) = apply { - this.id = percentageDiscountAdjustment.id - this.isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds - this.reason = percentageDiscountAdjustment.reason - this.adjustmentType = percentageDiscountAdjustment.adjustmentType - this.percentageDiscount = - percentageDiscountAdjustment.percentageDiscount - additionalProperties(percentageDiscountAdjustment.additionalProperties) + id = percentageDiscountAdjustment.id + isInvoiceLevel = percentageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = percentageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = percentageDiscountAdjustment.appliesToPriceIds + reason = percentageDiscountAdjustment.reason + adjustmentType = percentageDiscountAdjustment.adjustmentType + percentageDiscount = percentageDiscountAdjustment.percentageDiscount + additionalProperties = + percentageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1649,8 +1681,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1660,8 +1690,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1671,8 +1699,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1681,15 +1707,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -1705,20 +1727,17 @@ private constructor( * The percentage (as a value between 0 and 1) by which to discount the price * intervals this adjustment applies to in a given billing period. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1726,6 +1745,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountAdjustment = PercentageDiscountAdjustment( id, @@ -1809,22 +1836,35 @@ private constructor( "PercentageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, percentageDiscount=$percentageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountAdjustment.Builder::class) @NoAutoDetect class UsageDiscountAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val usageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -1889,6 +1929,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountAdjustment = apply { if (!validated) { id() @@ -1922,20 +1964,19 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountAdjustment: UsageDiscountAdjustment) = apply { - this.id = usageDiscountAdjustment.id - this.isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel - this.planPhaseOrder = usageDiscountAdjustment.planPhaseOrder - this.appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds - this.reason = usageDiscountAdjustment.reason - this.adjustmentType = usageDiscountAdjustment.adjustmentType - this.usageDiscount = usageDiscountAdjustment.usageDiscount - additionalProperties(usageDiscountAdjustment.additionalProperties) + id = usageDiscountAdjustment.id + isInvoiceLevel = usageDiscountAdjustment.isInvoiceLevel + planPhaseOrder = usageDiscountAdjustment.planPhaseOrder + appliesToPriceIds = usageDiscountAdjustment.appliesToPriceIds + reason = usageDiscountAdjustment.reason + adjustmentType = usageDiscountAdjustment.adjustmentType + usageDiscount = usageDiscountAdjustment.usageDiscount + additionalProperties = + usageDiscountAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -1949,8 +1990,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -1960,8 +1999,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -1971,8 +2008,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -1981,15 +2016,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2005,20 +2036,17 @@ private constructor( * The number of usage units by which to discount the price this adjustment * applies to in a given billing period. */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2026,6 +2054,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountAdjustment = UsageDiscountAdjustment( id, @@ -2109,23 +2145,38 @@ private constructor( "UsageDiscountAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, usageDiscount=$usageDiscount, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumAdjustment.Builder::class) @NoAutoDetect class MinimumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val minimumAmount: JsonField, - private val itemId: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonProperty("item_id") + @ExcludeMissing + private val itemId: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2196,6 +2247,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumAdjustment = apply { if (!validated) { id() @@ -2231,21 +2284,19 @@ private constructor( @JvmSynthetic internal fun from(minimumAdjustment: MinimumAdjustment) = apply { - this.id = minimumAdjustment.id - this.isInvoiceLevel = minimumAdjustment.isInvoiceLevel - this.planPhaseOrder = minimumAdjustment.planPhaseOrder - this.appliesToPriceIds = minimumAdjustment.appliesToPriceIds - this.reason = minimumAdjustment.reason - this.adjustmentType = minimumAdjustment.adjustmentType - this.minimumAmount = minimumAdjustment.minimumAmount - this.itemId = minimumAdjustment.itemId - additionalProperties(minimumAdjustment.additionalProperties) + id = minimumAdjustment.id + isInvoiceLevel = minimumAdjustment.isInvoiceLevel + planPhaseOrder = minimumAdjustment.planPhaseOrder + appliesToPriceIds = minimumAdjustment.appliesToPriceIds + reason = minimumAdjustment.reason + adjustmentType = minimumAdjustment.adjustmentType + minimumAmount = minimumAdjustment.minimumAmount + itemId = minimumAdjustment.itemId + additionalProperties = minimumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2259,8 +2310,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2270,8 +2319,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2281,8 +2328,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2291,15 +2336,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2315,8 +2356,6 @@ private constructor( * The minimum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } @@ -2325,18 +2364,15 @@ private constructor( fun itemId(itemId: String) = itemId(JsonField.of(itemId)) /** The item ID that revenue from this minimum will be attributed to. */ - @JsonProperty("item_id") - @ExcludeMissing fun itemId(itemId: JsonField) = apply { this.itemId = itemId } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2344,6 +2380,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumAdjustment = MinimumAdjustment( id, @@ -2428,22 +2472,35 @@ private constructor( "MinimumAdjustment{id=$id, isInvoiceLevel=$isInvoiceLevel, planPhaseOrder=$planPhaseOrder, appliesToPriceIds=$appliesToPriceIds, reason=$reason, adjustmentType=$adjustmentType, minimumAmount=$minimumAmount, itemId=$itemId, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumAdjustment.Builder::class) @NoAutoDetect class MaximumAdjustment + @JsonCreator private constructor( - private val id: JsonField, - private val isInvoiceLevel: JsonField, - private val planPhaseOrder: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val adjustmentType: JsonField, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("is_invoice_level") + @ExcludeMissing + private val isInvoiceLevel: JsonField = JsonMissing.of(), + @JsonProperty("plan_phase_order") + @ExcludeMissing + private val planPhaseOrder: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("adjustment_type") + @ExcludeMissing + private val adjustmentType: JsonField = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -2508,6 +2565,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumAdjustment = apply { if (!validated) { id() @@ -2541,20 +2600,18 @@ private constructor( @JvmSynthetic internal fun from(maximumAdjustment: MaximumAdjustment) = apply { - this.id = maximumAdjustment.id - this.isInvoiceLevel = maximumAdjustment.isInvoiceLevel - this.planPhaseOrder = maximumAdjustment.planPhaseOrder - this.appliesToPriceIds = maximumAdjustment.appliesToPriceIds - this.reason = maximumAdjustment.reason - this.adjustmentType = maximumAdjustment.adjustmentType - this.maximumAmount = maximumAdjustment.maximumAmount - additionalProperties(maximumAdjustment.additionalProperties) + id = maximumAdjustment.id + isInvoiceLevel = maximumAdjustment.isInvoiceLevel + planPhaseOrder = maximumAdjustment.planPhaseOrder + appliesToPriceIds = maximumAdjustment.appliesToPriceIds + reason = maximumAdjustment.reason + adjustmentType = maximumAdjustment.adjustmentType + maximumAmount = maximumAdjustment.maximumAmount + additionalProperties = maximumAdjustment.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -2568,8 +2625,6 @@ private constructor( * True for adjustments that apply to an entire invocice, false for adjustments * that apply to only one price. */ - @JsonProperty("is_invoice_level") - @ExcludeMissing fun isInvoiceLevel(isInvoiceLevel: JsonField) = apply { this.isInvoiceLevel = isInvoiceLevel } @@ -2579,8 +2634,6 @@ private constructor( planPhaseOrder(JsonField.of(planPhaseOrder)) /** The plan phase in which this adjustment is active. */ - @JsonProperty("plan_phase_order") - @ExcludeMissing fun planPhaseOrder(planPhaseOrder: JsonField) = apply { this.planPhaseOrder = planPhaseOrder } @@ -2590,8 +2643,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price IDs that this adjustment applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -2600,15 +2651,11 @@ private constructor( fun reason(reason: String) = reason(JsonField.of(reason)) /** The reason for the adjustment. */ - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } fun adjustmentType(adjustmentType: AdjustmentType) = adjustmentType(JsonField.of(adjustmentType)) - @JsonProperty("adjustment_type") - @ExcludeMissing fun adjustmentType(adjustmentType: JsonField) = apply { this.adjustmentType = adjustmentType } @@ -2624,20 +2671,17 @@ private constructor( * The maximum amount to charge in a given billing period for the prices this * adjustment applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -2645,6 +2689,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumAdjustment = MaximumAdjustment( id, @@ -2747,18 +2799,19 @@ private constructor( "AdjustmentInterval{id=$id, adjustment=$adjustment, startDate=$startDate, endDate=$endDate, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = BillingCycleAnchorConfiguration.Builder::class) @NoAutoDetect class BillingCycleAnchorConfiguration + @JsonCreator private constructor( - private val day: JsonField, - private val month: JsonField, - private val year: JsonField, - private val additionalProperties: Map, + @JsonProperty("day") @ExcludeMissing private val day: JsonField = JsonMissing.of(), + @JsonProperty("month") + @ExcludeMissing + private val month: JsonField = JsonMissing.of(), + @JsonProperty("year") @ExcludeMissing private val year: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** * The day of the month on which the billing cycle is anchored. If the maximum number of * days in a month is greater than this value, the last day of the month is the billing @@ -2803,6 +2856,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillingCycleAnchorConfiguration = apply { if (!validated) { day() @@ -2829,10 +2884,11 @@ private constructor( @JvmSynthetic internal fun from(billingCycleAnchorConfiguration: BillingCycleAnchorConfiguration) = apply { - this.day = billingCycleAnchorConfiguration.day - this.month = billingCycleAnchorConfiguration.month - this.year = billingCycleAnchorConfiguration.year - additionalProperties(billingCycleAnchorConfiguration.additionalProperties) + day = billingCycleAnchorConfiguration.day + month = billingCycleAnchorConfiguration.month + year = billingCycleAnchorConfiguration.year + additionalProperties = + billingCycleAnchorConfiguration.additionalProperties.toMutableMap() } /** @@ -2849,8 +2905,6 @@ private constructor( * cycle day (e.g. billing_cycle_day=31 for April means the billing period begins on the * 30th. */ - @JsonProperty("day") - @ExcludeMissing fun day(day: JsonField) = apply { this.day = day } /** @@ -2863,8 +2917,6 @@ private constructor( * The month on which the billing cycle is anchored (e.g. a quarterly price anchored in * February would have cycles starting February, May, August, and November). */ - @JsonProperty("month") - @ExcludeMissing fun month(month: JsonField) = apply { this.month = month } /** @@ -2877,24 +2929,27 @@ private constructor( * The year on which the billing cycle is anchored (e.g. a 2 year billing cycle anchored * on 2021 would have cycles starting on 2021, 2023, 2025, etc.). */ - @JsonProperty("year") - @ExcludeMissing fun year(year: JsonField) = apply { this.year = year } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillingCycleAnchorConfiguration = BillingCycleAnchorConfiguration( day, @@ -3102,21 +3157,32 @@ private constructor( } } - @JsonDeserialize(builder = AmountDiscountInterval.Builder::class) @NoAutoDetect class AmountDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val amountDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("amount_discount") + @ExcludeMissing + private val amountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `amount`. */ @@ -3162,6 +3228,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): AmountDiscountInterval = apply { if (!validated) { discountType() @@ -3193,21 +3261,19 @@ private constructor( @JvmSynthetic internal fun from(amountDiscountInterval: AmountDiscountInterval) = apply { - this.discountType = amountDiscountInterval.discountType - this.amountDiscount = amountDiscountInterval.amountDiscount - this.startDate = amountDiscountInterval.startDate - this.endDate = amountDiscountInterval.endDate - this.appliesToPriceIds = amountDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - amountDiscountInterval.appliesToPriceIntervalIds - additionalProperties(amountDiscountInterval.additionalProperties) + discountType = amountDiscountInterval.discountType + amountDiscount = amountDiscountInterval.amountDiscount + startDate = amountDiscountInterval.startDate + endDate = amountDiscountInterval.endDate + appliesToPriceIds = amountDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = amountDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + amountDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3217,8 +3283,6 @@ private constructor( amountDiscount(JsonField.of(amountDiscount)) /** Only available if discount_type is `amount`. */ - @JsonProperty("amount_discount") - @ExcludeMissing fun amountDiscount(amountDiscount: JsonField) = apply { this.amountDiscount = amountDiscount } @@ -3227,8 +3291,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3237,8 +3299,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3246,8 +3306,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3257,8 +3315,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3266,12 +3322,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3279,6 +3334,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): AmountDiscountInterval = AmountDiscountInterval( discountType, @@ -3360,21 +3423,32 @@ private constructor( "AmountDiscountInterval{discountType=$discountType, amountDiscount=$amountDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = PercentageDiscountInterval.Builder::class) @NoAutoDetect class PercentageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val percentageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("percentage_discount") + @ExcludeMissing + private val percentageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** Only available if discount_type is `percentage`.This is a number between 0 and 1. */ @@ -3422,6 +3496,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PercentageDiscountInterval = apply { if (!validated) { discountType() @@ -3453,21 +3529,19 @@ private constructor( @JvmSynthetic internal fun from(percentageDiscountInterval: PercentageDiscountInterval) = apply { - this.discountType = percentageDiscountInterval.discountType - this.percentageDiscount = percentageDiscountInterval.percentageDiscount - this.startDate = percentageDiscountInterval.startDate - this.endDate = percentageDiscountInterval.endDate - this.appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = - percentageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(percentageDiscountInterval.additionalProperties) + discountType = percentageDiscountInterval.discountType + percentageDiscount = percentageDiscountInterval.percentageDiscount + startDate = percentageDiscountInterval.startDate + endDate = percentageDiscountInterval.endDate + appliesToPriceIds = percentageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = percentageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = + percentageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3481,8 +3555,6 @@ private constructor( /** * Only available if discount_type is `percentage`.This is a number between 0 and 1. */ - @JsonProperty("percentage_discount") - @ExcludeMissing fun percentageDiscount(percentageDiscount: JsonField) = apply { this.percentageDiscount = percentageDiscount } @@ -3491,8 +3563,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3501,8 +3571,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3510,8 +3578,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3521,8 +3587,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3530,12 +3594,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3543,6 +3606,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PercentageDiscountInterval = PercentageDiscountInterval( discountType, @@ -3624,21 +3695,32 @@ private constructor( "PercentageDiscountInterval{discountType=$discountType, percentageDiscount=$percentageDiscount, startDate=$startDate, endDate=$endDate, appliesToPriceIds=$appliesToPriceIds, appliesToPriceIntervalIds=$appliesToPriceIntervalIds, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = UsageDiscountInterval.Builder::class) @NoAutoDetect class UsageDiscountInterval + @JsonCreator private constructor( - private val discountType: JsonField, - private val usageDiscount: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("usage_discount") + @ExcludeMissing + private val usageDiscount: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -3690,6 +3772,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UsageDiscountInterval = apply { if (!validated) { discountType() @@ -3721,20 +3805,18 @@ private constructor( @JvmSynthetic internal fun from(usageDiscountInterval: UsageDiscountInterval) = apply { - this.discountType = usageDiscountInterval.discountType - this.usageDiscount = usageDiscountInterval.usageDiscount - this.startDate = usageDiscountInterval.startDate - this.endDate = usageDiscountInterval.endDate - this.appliesToPriceIds = usageDiscountInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds - additionalProperties(usageDiscountInterval.additionalProperties) + discountType = usageDiscountInterval.discountType + usageDiscount = usageDiscountInterval.usageDiscount + startDate = usageDiscountInterval.startDate + endDate = usageDiscountInterval.endDate + appliesToPriceIds = usageDiscountInterval.appliesToPriceIds + appliesToPriceIntervalIds = usageDiscountInterval.appliesToPriceIntervalIds + additionalProperties = usageDiscountInterval.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -3750,8 +3832,6 @@ private constructor( * Only available if discount_type is `usage`. Number of usage units that this * discount is for */ - @JsonProperty("usage_discount") - @ExcludeMissing fun usageDiscount(usageDiscount: JsonField) = apply { this.usageDiscount = usageDiscount } @@ -3760,8 +3840,6 @@ private constructor( fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the discount interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -3770,8 +3848,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the discount interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this discount interval applies to. */ @@ -3779,8 +3855,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -3790,8 +3864,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this discount interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -3799,12 +3871,11 @@ private constructor( fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -3812,6 +3883,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UsageDiscountInterval = UsageDiscountInterval( discountType, @@ -3894,19 +3973,26 @@ private constructor( } } - @JsonDeserialize(builder = FixedFeeQuantitySchedule.Builder::class) @NoAutoDetect class FixedFeeQuantitySchedule + @JsonCreator private constructor( - private val priceId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -3928,6 +4014,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantitySchedule = apply { if (!validated) { priceId() @@ -3955,53 +4043,50 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantitySchedule: FixedFeeQuantitySchedule) = apply { - this.priceId = fixedFeeQuantitySchedule.priceId - this.startDate = fixedFeeQuantitySchedule.startDate - this.endDate = fixedFeeQuantitySchedule.endDate - this.quantity = fixedFeeQuantitySchedule.quantity - additionalProperties(fixedFeeQuantitySchedule.additionalProperties) + priceId = fixedFeeQuantitySchedule.priceId + startDate = fixedFeeQuantitySchedule.startDate + endDate = fixedFeeQuantitySchedule.endDate + quantity = fixedFeeQuantitySchedule.quantity + additionalProperties = fixedFeeQuantitySchedule.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantitySchedule = FixedFeeQuantitySchedule( priceId, @@ -4030,20 +4115,29 @@ private constructor( "FixedFeeQuantitySchedule{priceId=$priceId, startDate=$startDate, endDate=$endDate, quantity=$quantity, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MaximumInterval.Builder::class) @NoAutoDetect class MaximumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val maximumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("maximum_amount") + @ExcludeMissing + private val maximumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the maximum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4091,6 +4185,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MaximumInterval = apply { if (!validated) { startDate() @@ -4120,20 +4216,18 @@ private constructor( @JvmSynthetic internal fun from(maximumInterval: MaximumInterval) = apply { - this.startDate = maximumInterval.startDate - this.endDate = maximumInterval.endDate - this.appliesToPriceIds = maximumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds - this.maximumAmount = maximumInterval.maximumAmount - additionalProperties(maximumInterval.additionalProperties) + startDate = maximumInterval.startDate + endDate = maximumInterval.endDate + appliesToPriceIds = maximumInterval.appliesToPriceIds + appliesToPriceIntervalIds = maximumInterval.appliesToPriceIntervalIds + maximumAmount = maximumInterval.maximumAmount + additionalProperties = maximumInterval.additionalProperties.toMutableMap() } /** The start date of the maximum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the maximum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4142,8 +4236,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the maximum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this maximum interval applies to. */ @@ -4151,8 +4243,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4162,8 +4252,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this maximum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4179,26 +4267,29 @@ private constructor( * The maximum amount to charge in a given billing period for the price intervals this * transform applies to. */ - @JsonProperty("maximum_amount") - @ExcludeMissing fun maximumAmount(maximumAmount: JsonField) = apply { this.maximumAmount = maximumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MaximumInterval = MaximumInterval( startDate, @@ -4233,19 +4324,20 @@ private constructor( * dictionary. Individual keys can be removed by setting the value to `null`, and the entire * metadata mapping can be cleared by setting `metadata` to `null`. */ - @JsonDeserialize(builder = Metadata.Builder::class) @NoAutoDetect class Metadata + @JsonCreator private constructor( - private val additionalProperties: Map, + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - @JsonAnyGetter @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Metadata = apply { if (!validated) { validated = true @@ -4265,23 +4357,28 @@ private constructor( @JvmSynthetic internal fun from(metadata: Metadata) = apply { - additionalProperties(metadata.additionalProperties) + additionalProperties = metadata.additionalProperties.toMutableMap() } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Metadata = Metadata(additionalProperties.toImmutable()) } @@ -4302,20 +4399,29 @@ private constructor( override fun toString() = "Metadata{additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MinimumInterval.Builder::class) @NoAutoDetect class MinimumInterval + @JsonCreator private constructor( - private val startDate: JsonField, - private val endDate: JsonField, - private val appliesToPriceIds: JsonField>, - private val appliesToPriceIntervalIds: JsonField>, - private val minimumAmount: JsonField, - private val additionalProperties: Map, + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("applies_to_price_interval_ids") + @ExcludeMissing + private val appliesToPriceIntervalIds: JsonField> = JsonMissing.of(), + @JsonProperty("minimum_amount") + @ExcludeMissing + private val minimumAmount: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - /** The start date of the minimum interval. */ fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -4363,6 +4469,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MinimumInterval = apply { if (!validated) { startDate() @@ -4392,20 +4500,18 @@ private constructor( @JvmSynthetic internal fun from(minimumInterval: MinimumInterval) = apply { - this.startDate = minimumInterval.startDate - this.endDate = minimumInterval.endDate - this.appliesToPriceIds = minimumInterval.appliesToPriceIds - this.appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds - this.minimumAmount = minimumInterval.minimumAmount - additionalProperties(minimumInterval.additionalProperties) + startDate = minimumInterval.startDate + endDate = minimumInterval.endDate + appliesToPriceIds = minimumInterval.appliesToPriceIds + appliesToPriceIntervalIds = minimumInterval.appliesToPriceIntervalIds + minimumAmount = minimumInterval.minimumAmount + additionalProperties = minimumInterval.additionalProperties.toMutableMap() } /** The start date of the minimum interval. */ fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) /** The start date of the minimum interval. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -4414,8 +4520,6 @@ private constructor( fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) /** The end date of the minimum interval. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** The price ids that this minimum interval applies to. */ @@ -4423,8 +4527,6 @@ private constructor( appliesToPriceIds(JsonField.of(appliesToPriceIds)) /** The price ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } @@ -4434,8 +4536,6 @@ private constructor( appliesToPriceIntervalIds(JsonField.of(appliesToPriceIntervalIds)) /** The price interval ids that this minimum interval applies to. */ - @JsonProperty("applies_to_price_interval_ids") - @ExcludeMissing fun appliesToPriceIntervalIds(appliesToPriceIntervalIds: JsonField>) = apply { this.appliesToPriceIntervalIds = appliesToPriceIntervalIds @@ -4451,26 +4551,29 @@ private constructor( * The minimum amount to charge in a given billing period for the price intervals this * minimum applies to. */ - @JsonProperty("minimum_amount") - @ExcludeMissing fun minimumAmount(minimumAmount: JsonField) = apply { this.minimumAmount = minimumAmount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MinimumInterval = MinimumInterval( startDate, @@ -4504,23 +4607,37 @@ private constructor( * The Price Interval resource represents a period of time for which a price will bill on a * subscription. A subscription’s price intervals define its billing behavior. */ - @JsonDeserialize(builder = PriceInterval.Builder::class) @NoAutoDetect class PriceInterval + @JsonCreator private constructor( - private val id: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val price: JsonField, - private val billingCycleDay: JsonField, - private val fixedFeeQuantityTransitions: JsonField>, - private val currentBillingPeriodStartDate: JsonField, - private val currentBillingPeriodEndDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") @ExcludeMissing private val id: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonProperty("price") + @ExcludeMissing + private val price: JsonField = JsonMissing.of(), + @JsonProperty("billing_cycle_day") + @ExcludeMissing + private val billingCycleDay: JsonField = JsonMissing.of(), + @JsonProperty("fixed_fee_quantity_transitions") + @ExcludeMissing + private val fixedFeeQuantityTransitions: JsonField> = + JsonMissing.of(), + @JsonProperty("current_billing_period_start_date") + @ExcludeMissing + private val currentBillingPeriodStartDate: JsonField = JsonMissing.of(), + @JsonProperty("current_billing_period_end_date") + @ExcludeMissing + private val currentBillingPeriodEndDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") /** @@ -5075,6 +5192,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): PriceInterval = apply { if (!validated) { id() @@ -5111,21 +5230,19 @@ private constructor( @JvmSynthetic internal fun from(priceInterval: PriceInterval) = apply { - this.id = priceInterval.id - this.startDate = priceInterval.startDate - this.endDate = priceInterval.endDate - this.price = priceInterval.price - this.billingCycleDay = priceInterval.billingCycleDay - this.fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions - this.currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate - this.currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate - additionalProperties(priceInterval.additionalProperties) + id = priceInterval.id + startDate = priceInterval.startDate + endDate = priceInterval.endDate + price = priceInterval.price + billingCycleDay = priceInterval.billingCycleDay + fixedFeeQuantityTransitions = priceInterval.fixedFeeQuantityTransitions + currentBillingPeriodStartDate = priceInterval.currentBillingPeriodStartDate + currentBillingPeriodEndDate = priceInterval.currentBillingPeriodEndDate + additionalProperties = priceInterval.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } /** @@ -5138,8 +5255,6 @@ private constructor( * The start date of the price interval. This is the date that Orb starts billing for * this price. */ - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } @@ -5154,8 +5269,6 @@ private constructor( * The end date of the price interval. This is the date that Orb stops billing for this * price. */ - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } /** @@ -5616,8 +5729,6 @@ private constructor( * } * ``` */ - @JsonProperty("price") - @ExcludeMissing fun price(price: JsonField) = apply { this.price = price } /** The day of the month that Orb bills for this price */ @@ -5625,8 +5736,6 @@ private constructor( billingCycleDay(JsonField.of(billingCycleDay)) /** The day of the month that Orb bills for this price */ - @JsonProperty("billing_cycle_day") - @ExcludeMissing fun billingCycleDay(billingCycleDay: JsonField) = apply { this.billingCycleDay = billingCycleDay } @@ -5643,8 +5752,6 @@ private constructor( * The fixed fee quantity transitions for this price interval. This is only relevant for * fixed fees. */ - @JsonProperty("fixed_fee_quantity_transitions") - @ExcludeMissing fun fixedFeeQuantityTransitions( fixedFeeQuantityTransitions: JsonField> ) = apply { this.fixedFeeQuantityTransitions = fixedFeeQuantityTransitions } @@ -5662,8 +5769,6 @@ private constructor( * instant returned is exactly the beginning of the billing period. Set to null if this * price interval is not currently active. */ - @JsonProperty("current_billing_period_start_date") - @ExcludeMissing fun currentBillingPeriodStartDate( currentBillingPeriodStartDate: JsonField ) = apply { this.currentBillingPeriodStartDate = currentBillingPeriodStartDate } @@ -5681,26 +5786,29 @@ private constructor( * instant returned is exactly the end of the billing period. Set to null if this price * interval is not currently active. */ - @JsonProperty("current_billing_period_end_date") - @ExcludeMissing fun currentBillingPeriodEndDate( currentBillingPeriodEndDate: JsonField ) = apply { this.currentBillingPeriodEndDate = currentBillingPeriodEndDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): PriceInterval = PriceInterval( id, @@ -5715,18 +5823,23 @@ private constructor( ) } - @JsonDeserialize(builder = FixedFeeQuantityTransition.Builder::class) @NoAutoDetect class FixedFeeQuantityTransition + @JsonCreator private constructor( - private val priceId: JsonField, - private val effectiveDate: JsonField, - private val quantity: JsonField, - private val additionalProperties: Map, + @JsonProperty("price_id") + @ExcludeMissing + private val priceId: JsonField = JsonMissing.of(), + @JsonProperty("effective_date") + @ExcludeMissing + private val effectiveDate: JsonField = JsonMissing.of(), + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun priceId(): String = priceId.getRequired("price_id") fun effectiveDate(): OffsetDateTime = effectiveDate.getRequired("effective_date") @@ -5743,6 +5856,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): FixedFeeQuantityTransition = apply { if (!validated) { priceId() @@ -5768,41 +5883,35 @@ private constructor( @JvmSynthetic internal fun from(fixedFeeQuantityTransition: FixedFeeQuantityTransition) = apply { - this.priceId = fixedFeeQuantityTransition.priceId - this.effectiveDate = fixedFeeQuantityTransition.effectiveDate - this.quantity = fixedFeeQuantityTransition.quantity - additionalProperties(fixedFeeQuantityTransition.additionalProperties) + priceId = fixedFeeQuantityTransition.priceId + effectiveDate = fixedFeeQuantityTransition.effectiveDate + quantity = fixedFeeQuantityTransition.quantity + additionalProperties = + fixedFeeQuantityTransition.additionalProperties.toMutableMap() } fun priceId(priceId: String) = priceId(JsonField.of(priceId)) - @JsonProperty("price_id") - @ExcludeMissing fun priceId(priceId: JsonField) = apply { this.priceId = priceId } fun effectiveDate(effectiveDate: OffsetDateTime) = effectiveDate(JsonField.of(effectiveDate)) - @JsonProperty("effective_date") - @ExcludeMissing fun effectiveDate(effectiveDate: JsonField) = apply { this.effectiveDate = effectiveDate } fun quantity(quantity: Long) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -5810,6 +5919,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): FixedFeeQuantityTransition = FixedFeeQuantityTransition( priceId, @@ -5855,18 +5972,23 @@ private constructor( "PriceInterval{id=$id, startDate=$startDate, endDate=$endDate, price=$price, billingCycleDay=$billingCycleDay, fixedFeeQuantityTransitions=$fixedFeeQuantityTransitions, currentBillingPeriodStartDate=$currentBillingPeriodStartDate, currentBillingPeriodEndDate=$currentBillingPeriodEndDate, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = RedeemedCoupon.Builder::class) @NoAutoDetect class RedeemedCoupon + @JsonCreator private constructor( - private val couponId: JsonField, - private val startDate: JsonField, - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("coupon_id") + @ExcludeMissing + private val couponId: JsonField = JsonMissing.of(), + @JsonProperty("start_date") + @ExcludeMissing + private val startDate: JsonField = JsonMissing.of(), + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun couponId(): String = couponId.getRequired("coupon_id") fun startDate(): OffsetDateTime = startDate.getRequired("start_date") @@ -5884,6 +6006,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): RedeemedCoupon = apply { if (!validated) { couponId() @@ -5909,46 +6033,45 @@ private constructor( @JvmSynthetic internal fun from(redeemedCoupon: RedeemedCoupon) = apply { - this.couponId = redeemedCoupon.couponId - this.startDate = redeemedCoupon.startDate - this.endDate = redeemedCoupon.endDate - additionalProperties(redeemedCoupon.additionalProperties) + couponId = redeemedCoupon.couponId + startDate = redeemedCoupon.startDate + endDate = redeemedCoupon.endDate + additionalProperties = redeemedCoupon.additionalProperties.toMutableMap() } fun couponId(couponId: String) = couponId(JsonField.of(couponId)) - @JsonProperty("coupon_id") - @ExcludeMissing fun couponId(couponId: JsonField) = apply { this.couponId = couponId } fun startDate(startDate: OffsetDateTime) = startDate(JsonField.of(startDate)) - @JsonProperty("start_date") - @ExcludeMissing fun startDate(startDate: JsonField) = apply { this.startDate = startDate } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): RedeemedCoupon = RedeemedCoupon( couponId, @@ -6039,16 +6162,17 @@ private constructor( override fun toString() = value.toString() } - @JsonDeserialize(builder = TrialInfo.Builder::class) @NoAutoDetect class TrialInfo + @JsonCreator private constructor( - private val endDate: JsonField, - private val additionalProperties: Map, + @JsonProperty("end_date") + @ExcludeMissing + private val endDate: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun endDate(): Optional = Optional.ofNullable(endDate.getNullable("end_date")) @@ -6058,6 +6182,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialInfo = apply { if (!validated) { endDate() @@ -6079,30 +6205,33 @@ private constructor( @JvmSynthetic internal fun from(trialInfo: TrialInfo) = apply { - this.endDate = trialInfo.endDate - additionalProperties(trialInfo.additionalProperties) + endDate = trialInfo.endDate + additionalProperties = trialInfo.additionalProperties.toMutableMap() } fun endDate(endDate: OffsetDateTime) = endDate(JsonField.of(endDate)) - @JsonProperty("end_date") - @ExcludeMissing fun endDate(endDate: JsonField) = apply { this.endDate = endDate } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialInfo = TrialInfo(endDate, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUsage.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUsage.kt index 15e4f2de..18da122a 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUsage.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/SubscriptionUsage.kt @@ -22,6 +22,7 @@ import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect import com.withorb.api.core.getOrThrow +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.time.OffsetDateTime @@ -158,16 +159,17 @@ private constructor( } } - @JsonDeserialize(builder = UngroupedSubscriptionUsage.Builder::class) @NoAutoDetect class UngroupedSubscriptionUsage + @JsonCreator private constructor( - private val data: JsonField>, - private val additionalProperties: Map, + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun data(): List = data.getRequired("data") @JsonProperty("data") @ExcludeMissing fun _data() = data @@ -176,6 +178,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): UngroupedSubscriptionUsage = apply { if (!validated) { data().forEach { it.validate() } @@ -197,30 +201,34 @@ private constructor( @JvmSynthetic internal fun from(ungroupedSubscriptionUsage: UngroupedSubscriptionUsage) = apply { - this.data = ungroupedSubscriptionUsage.data - additionalProperties(ungroupedSubscriptionUsage.additionalProperties) + data = ungroupedSubscriptionUsage.data + additionalProperties = + ungroupedSubscriptionUsage.additionalProperties.toMutableMap() } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): UngroupedSubscriptionUsage = UngroupedSubscriptionUsage( data.map { it.toImmutable() }, @@ -228,18 +236,23 @@ private constructor( ) } - @JsonDeserialize(builder = Data.Builder::class) @NoAutoDetect class Data + @JsonCreator private constructor( - private val usage: JsonField>, - private val billableMetric: JsonField, - private val viewMode: JsonField, - private val additionalProperties: Map, + @JsonProperty("usage") + @ExcludeMissing + private val usage: JsonField> = JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("view_mode") + @ExcludeMissing + private val viewMode: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun usage(): List = usage.getRequired("usage") fun billableMetric(): BillableMetric = billableMetric.getRequired("billable_metric") @@ -256,6 +269,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Data = apply { if (!validated) { usage().forEach { it.validate() } @@ -281,41 +296,34 @@ private constructor( @JvmSynthetic internal fun from(data: Data) = apply { - this.usage = data.usage - this.billableMetric = data.billableMetric - this.viewMode = data.viewMode - additionalProperties(data.additionalProperties) + usage = data.usage + billableMetric = data.billableMetric + viewMode = data.viewMode + additionalProperties = data.additionalProperties.toMutableMap() } fun usage(usage: List) = usage(JsonField.of(usage)) - @JsonProperty("usage") - @ExcludeMissing fun usage(usage: JsonField>) = apply { this.usage = usage } fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } fun viewMode(viewMode: ViewMode) = viewMode(JsonField.of(viewMode)) - @JsonProperty("view_mode") - @ExcludeMissing fun viewMode(viewMode: JsonField) = apply { this.viewMode = viewMode } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -323,6 +331,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Data = Data( usage.map { it.toImmutable() }, @@ -332,17 +348,20 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -355,6 +374,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -378,31 +399,26 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - this.name = billableMetric.name - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + name = billableMetric.name + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -410,6 +426,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric( id, @@ -436,18 +460,23 @@ private constructor( "BillableMetric{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Usage.Builder::class) @NoAutoDetect class Usage + @JsonCreator private constructor( - private val quantity: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val additionalProperties: Map, + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun quantity(): Double = quantity.getRequired("quantity") fun timeframeStart(): OffsetDateTime = timeframeStart.getRequired("timeframe_start") @@ -466,6 +495,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Usage = apply { if (!validated) { quantity() @@ -491,23 +522,19 @@ private constructor( @JvmSynthetic internal fun from(usage: Usage) = apply { - this.quantity = usage.quantity - this.timeframeStart = usage.timeframeStart - this.timeframeEnd = usage.timeframeEnd - additionalProperties(usage.additionalProperties) + quantity = usage.quantity + timeframeStart = usage.timeframeStart + timeframeEnd = usage.timeframeEnd + additionalProperties = usage.additionalProperties.toMutableMap() } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } @@ -515,20 +542,17 @@ private constructor( fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -536,6 +560,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Usage = Usage( quantity, @@ -656,17 +688,20 @@ private constructor( "UngroupedSubscriptionUsage{data=$data, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = GroupedSubscriptionUsage.Builder::class) @NoAutoDetect class GroupedSubscriptionUsage + @JsonCreator private constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + @ExcludeMissing + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun data(): List = data.getRequired("data") fun paginationMetadata(): Optional = @@ -682,6 +717,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): GroupedSubscriptionUsage = apply { if (!validated) { data().forEach { it.validate() } @@ -705,40 +742,41 @@ private constructor( @JvmSynthetic internal fun from(groupedSubscriptionUsage: GroupedSubscriptionUsage) = apply { - this.data = groupedSubscriptionUsage.data - this.paginationMetadata = groupedSubscriptionUsage.paginationMetadata - additionalProperties(groupedSubscriptionUsage.additionalProperties) + data = groupedSubscriptionUsage.data + paginationMetadata = groupedSubscriptionUsage.paginationMetadata + additionalProperties = groupedSubscriptionUsage.additionalProperties.toMutableMap() } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") - @ExcludeMissing fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): GroupedSubscriptionUsage = GroupedSubscriptionUsage( data.map { it.toImmutable() }, @@ -747,19 +785,26 @@ private constructor( ) } - @JsonDeserialize(builder = Data.Builder::class) @NoAutoDetect class Data + @JsonCreator private constructor( - private val usage: JsonField>, - private val billableMetric: JsonField, - private val metricGroup: JsonField, - private val viewMode: JsonField, - private val additionalProperties: Map, + @JsonProperty("usage") + @ExcludeMissing + private val usage: JsonField> = JsonMissing.of(), + @JsonProperty("billable_metric") + @ExcludeMissing + private val billableMetric: JsonField = JsonMissing.of(), + @JsonProperty("metric_group") + @ExcludeMissing + private val metricGroup: JsonField = JsonMissing.of(), + @JsonProperty("view_mode") + @ExcludeMissing + private val viewMode: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun usage(): List = usage.getRequired("usage") fun billableMetric(): BillableMetric = billableMetric.getRequired("billable_metric") @@ -780,6 +825,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Data = apply { if (!validated) { usage().forEach { it.validate() } @@ -807,50 +854,41 @@ private constructor( @JvmSynthetic internal fun from(data: Data) = apply { - this.usage = data.usage - this.billableMetric = data.billableMetric - this.metricGroup = data.metricGroup - this.viewMode = data.viewMode - additionalProperties(data.additionalProperties) + usage = data.usage + billableMetric = data.billableMetric + metricGroup = data.metricGroup + viewMode = data.viewMode + additionalProperties = data.additionalProperties.toMutableMap() } fun usage(usage: List) = usage(JsonField.of(usage)) - @JsonProperty("usage") - @ExcludeMissing fun usage(usage: JsonField>) = apply { this.usage = usage } fun billableMetric(billableMetric: BillableMetric) = billableMetric(JsonField.of(billableMetric)) - @JsonProperty("billable_metric") - @ExcludeMissing fun billableMetric(billableMetric: JsonField) = apply { this.billableMetric = billableMetric } fun metricGroup(metricGroup: MetricGroup) = metricGroup(JsonField.of(metricGroup)) - @JsonProperty("metric_group") - @ExcludeMissing fun metricGroup(metricGroup: JsonField) = apply { this.metricGroup = metricGroup } fun viewMode(viewMode: ViewMode) = viewMode(JsonField.of(viewMode)) - @JsonProperty("view_mode") - @ExcludeMissing fun viewMode(viewMode: JsonField) = apply { this.viewMode = viewMode } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -858,6 +896,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Data = Data( usage.map { it.toImmutable() }, @@ -868,17 +914,20 @@ private constructor( ) } - @JsonDeserialize(builder = BillableMetric.Builder::class) @NoAutoDetect class BillableMetric + @JsonCreator private constructor( - private val id: JsonField, - private val name: JsonField, - private val additionalProperties: Map, + @JsonProperty("id") + @ExcludeMissing + private val id: JsonField = JsonMissing.of(), + @JsonProperty("name") + @ExcludeMissing + private val name: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun id(): String = id.getRequired("id") fun name(): String = name.getRequired("name") @@ -891,6 +940,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): BillableMetric = apply { if (!validated) { id() @@ -914,31 +965,26 @@ private constructor( @JvmSynthetic internal fun from(billableMetric: BillableMetric) = apply { - this.id = billableMetric.id - this.name = billableMetric.name - additionalProperties(billableMetric.additionalProperties) + id = billableMetric.id + name = billableMetric.name + additionalProperties = billableMetric.additionalProperties.toMutableMap() } fun id(id: String) = id(JsonField.of(id)) - @JsonProperty("id") - @ExcludeMissing fun id(id: JsonField) = apply { this.id = id } fun name(name: String) = name(JsonField.of(name)) - @JsonProperty("name") - @ExcludeMissing fun name(name: JsonField) = apply { this.name = name } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -946,6 +992,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): BillableMetric = BillableMetric( id, @@ -972,17 +1026,20 @@ private constructor( "BillableMetric{id=$id, name=$name, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = MetricGroup.Builder::class) @NoAutoDetect class MetricGroup + @JsonCreator private constructor( - private val propertyKey: JsonField, - private val propertyValue: JsonField, - private val additionalProperties: Map, + @JsonProperty("property_key") + @ExcludeMissing + private val propertyKey: JsonField = JsonMissing.of(), + @JsonProperty("property_value") + @ExcludeMissing + private val propertyValue: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun propertyKey(): String = propertyKey.getRequired("property_key") fun propertyValue(): String = propertyValue.getRequired("property_value") @@ -995,6 +1052,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): MetricGroup = apply { if (!validated) { propertyKey() @@ -1018,15 +1077,13 @@ private constructor( @JvmSynthetic internal fun from(metricGroup: MetricGroup) = apply { - this.propertyKey = metricGroup.propertyKey - this.propertyValue = metricGroup.propertyValue - additionalProperties(metricGroup.additionalProperties) + propertyKey = metricGroup.propertyKey + propertyValue = metricGroup.propertyValue + additionalProperties = metricGroup.additionalProperties.toMutableMap() } fun propertyKey(propertyKey: String) = propertyKey(JsonField.of(propertyKey)) - @JsonProperty("property_key") - @ExcludeMissing fun propertyKey(propertyKey: JsonField) = apply { this.propertyKey = propertyKey } @@ -1034,20 +1091,17 @@ private constructor( fun propertyValue(propertyValue: String) = propertyValue(JsonField.of(propertyValue)) - @JsonProperty("property_value") - @ExcludeMissing fun propertyValue(propertyValue: JsonField) = apply { this.propertyValue = propertyValue } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1055,6 +1109,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): MetricGroup = MetricGroup( propertyKey, @@ -1081,18 +1143,23 @@ private constructor( "MetricGroup{propertyKey=$propertyKey, propertyValue=$propertyValue, additionalProperties=$additionalProperties}" } - @JsonDeserialize(builder = Usage.Builder::class) @NoAutoDetect class Usage + @JsonCreator private constructor( - private val quantity: JsonField, - private val timeframeStart: JsonField, - private val timeframeEnd: JsonField, - private val additionalProperties: Map, + @JsonProperty("quantity") + @ExcludeMissing + private val quantity: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_start") + @ExcludeMissing + private val timeframeStart: JsonField = JsonMissing.of(), + @JsonProperty("timeframe_end") + @ExcludeMissing + private val timeframeEnd: JsonField = JsonMissing.of(), + @JsonAnySetter + private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun quantity(): Double = quantity.getRequired("quantity") fun timeframeStart(): OffsetDateTime = timeframeStart.getRequired("timeframe_start") @@ -1111,6 +1178,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Usage = apply { if (!validated) { quantity() @@ -1136,23 +1205,19 @@ private constructor( @JvmSynthetic internal fun from(usage: Usage) = apply { - this.quantity = usage.quantity - this.timeframeStart = usage.timeframeStart - this.timeframeEnd = usage.timeframeEnd - additionalProperties(usage.additionalProperties) + quantity = usage.quantity + timeframeStart = usage.timeframeStart + timeframeEnd = usage.timeframeEnd + additionalProperties = usage.additionalProperties.toMutableMap() } fun quantity(quantity: Double) = quantity(JsonField.of(quantity)) - @JsonProperty("quantity") - @ExcludeMissing fun quantity(quantity: JsonField) = apply { this.quantity = quantity } fun timeframeStart(timeframeStart: OffsetDateTime) = timeframeStart(JsonField.of(timeframeStart)) - @JsonProperty("timeframe_start") - @ExcludeMissing fun timeframeStart(timeframeStart: JsonField) = apply { this.timeframeStart = timeframeStart } @@ -1160,20 +1225,17 @@ private constructor( fun timeframeEnd(timeframeEnd: OffsetDateTime) = timeframeEnd(JsonField.of(timeframeEnd)) - @JsonProperty("timeframe_end") - @ExcludeMissing fun timeframeEnd(timeframeEnd: JsonField) = apply { this.timeframeEnd = timeframeEnd } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = @@ -1181,6 +1243,14 @@ private constructor( this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { + additionalProperties.remove(key) + } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Usage = Usage( quantity, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/Subscriptions.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/Subscriptions.kt index 560ddbd5..2a3ee645 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/Subscriptions.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/Subscriptions.kt @@ -4,27 +4,30 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects -@JsonDeserialize(builder = Subscriptions.Builder::class) @NoAutoDetect class Subscriptions +@JsonCreator private constructor( - private val data: JsonField>, - private val paginationMetadata: JsonField, - private val additionalProperties: Map, + @JsonProperty("data") + @ExcludeMissing + private val data: JsonField> = JsonMissing.of(), + @JsonProperty("pagination_metadata") + @ExcludeMissing + private val paginationMetadata: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun data(): List = data.getRequired("data") fun paginationMetadata(): PaginationMetadata = @@ -40,6 +43,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): Subscriptions = apply { if (!validated) { data().forEach { it.validate() } @@ -63,40 +68,41 @@ private constructor( @JvmSynthetic internal fun from(subscriptions: Subscriptions) = apply { - this.data = subscriptions.data - this.paginationMetadata = subscriptions.paginationMetadata - additionalProperties(subscriptions.additionalProperties) + data = subscriptions.data + paginationMetadata = subscriptions.paginationMetadata + additionalProperties = subscriptions.additionalProperties.toMutableMap() } fun data(data: List) = data(JsonField.of(data)) - @JsonProperty("data") - @ExcludeMissing fun data(data: JsonField>) = apply { this.data = data } fun paginationMetadata(paginationMetadata: PaginationMetadata) = paginationMetadata(JsonField.of(paginationMetadata)) - @JsonProperty("pagination_metadata") - @ExcludeMissing fun paginationMetadata(paginationMetadata: JsonField) = apply { this.paginationMetadata = paginationMetadata } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): Subscriptions = Subscriptions( data.map { it.toImmutable() }, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/TopLevelPingResponse.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/TopLevelPingResponse.kt index b9999ac0..b02f1abc 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/TopLevelPingResponse.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/TopLevelPingResponse.kt @@ -4,26 +4,27 @@ package com.withorb.api.models import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter +import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import java.util.Objects -@JsonDeserialize(builder = TopLevelPingResponse.Builder::class) @NoAutoDetect class TopLevelPingResponse +@JsonCreator private constructor( - private val response: JsonField, - private val additionalProperties: Map, + @JsonProperty("response") + @ExcludeMissing + private val response: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun response(): String = response.getRequired("response") @JsonProperty("response") @ExcludeMissing fun _response() = response @@ -32,6 +33,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TopLevelPingResponse = apply { if (!validated) { response() @@ -53,30 +56,33 @@ private constructor( @JvmSynthetic internal fun from(topLevelPingResponse: TopLevelPingResponse) = apply { - this.response = topLevelPingResponse.response - additionalProperties(topLevelPingResponse.additionalProperties) + response = topLevelPingResponse.response + additionalProperties = topLevelPingResponse.additionalProperties.toMutableMap() } fun response(response: String) = response(JsonField.of(response)) - @JsonProperty("response") - @ExcludeMissing fun response(response: JsonField) = apply { this.response = response } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TopLevelPingResponse = TopLevelPingResponse(response, additionalProperties.toImmutable()) } diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/models/TrialDiscount.kt b/orb-java-core/src/main/kotlin/com/withorb/api/models/TrialDiscount.kt index 8345c816..76045f97 100644 --- a/orb-java-core/src/main/kotlin/com/withorb/api/models/TrialDiscount.kt +++ b/orb-java-core/src/main/kotlin/com/withorb/api/models/TrialDiscount.kt @@ -6,32 +6,40 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.withorb.api.core.Enum import com.withorb.api.core.ExcludeMissing import com.withorb.api.core.JsonField import com.withorb.api.core.JsonMissing import com.withorb.api.core.JsonValue import com.withorb.api.core.NoAutoDetect +import com.withorb.api.core.immutableEmptyMap import com.withorb.api.core.toImmutable import com.withorb.api.errors.OrbInvalidDataException import java.util.Objects import java.util.Optional -@JsonDeserialize(builder = TrialDiscount.Builder::class) @NoAutoDetect class TrialDiscount +@JsonCreator private constructor( - private val discountType: JsonField, - private val appliesToPriceIds: JsonField>, - private val reason: JsonField, - private val trialAmountDiscount: JsonField, - private val trialPercentageDiscount: JsonField, - private val additionalProperties: Map, + @JsonProperty("discount_type") + @ExcludeMissing + private val discountType: JsonField = JsonMissing.of(), + @JsonProperty("applies_to_price_ids") + @ExcludeMissing + private val appliesToPriceIds: JsonField> = JsonMissing.of(), + @JsonProperty("reason") + @ExcludeMissing + private val reason: JsonField = JsonMissing.of(), + @JsonProperty("trial_amount_discount") + @ExcludeMissing + private val trialAmountDiscount: JsonField = JsonMissing.of(), + @JsonProperty("trial_percentage_discount") + @ExcludeMissing + private val trialPercentageDiscount: JsonField = JsonMissing.of(), + @JsonAnySetter private val additionalProperties: Map = immutableEmptyMap(), ) { - private var validated: Boolean = false - fun discountType(): DiscountType = discountType.getRequired("discount_type") /** @@ -76,6 +84,8 @@ private constructor( @ExcludeMissing fun _additionalProperties(): Map = additionalProperties + private var validated: Boolean = false + fun validate(): TrialDiscount = apply { if (!validated) { discountType() @@ -105,18 +115,16 @@ private constructor( @JvmSynthetic internal fun from(trialDiscount: TrialDiscount) = apply { - this.discountType = trialDiscount.discountType - this.appliesToPriceIds = trialDiscount.appliesToPriceIds - this.reason = trialDiscount.reason - this.trialAmountDiscount = trialDiscount.trialAmountDiscount - this.trialPercentageDiscount = trialDiscount.trialPercentageDiscount - additionalProperties(trialDiscount.additionalProperties) + discountType = trialDiscount.discountType + appliesToPriceIds = trialDiscount.appliesToPriceIds + reason = trialDiscount.reason + trialAmountDiscount = trialDiscount.trialAmountDiscount + trialPercentageDiscount = trialDiscount.trialPercentageDiscount + additionalProperties = trialDiscount.additionalProperties.toMutableMap() } fun discountType(discountType: DiscountType) = discountType(JsonField.of(discountType)) - @JsonProperty("discount_type") - @ExcludeMissing fun discountType(discountType: JsonField) = apply { this.discountType = discountType } @@ -132,16 +140,12 @@ private constructor( * List of price_ids that this discount applies to. For plan/plan phase discounts, this can * be a subset of prices. */ - @JsonProperty("applies_to_price_ids") - @ExcludeMissing fun appliesToPriceIds(appliesToPriceIds: JsonField>) = apply { this.appliesToPriceIds = appliesToPriceIds } fun reason(reason: String) = reason(JsonField.of(reason)) - @JsonProperty("reason") - @ExcludeMissing fun reason(reason: JsonField) = apply { this.reason = reason } /** Only available if discount_type is `trial` */ @@ -149,8 +153,6 @@ private constructor( trialAmountDiscount(JsonField.of(trialAmountDiscount)) /** Only available if discount_type is `trial` */ - @JsonProperty("trial_amount_discount") - @ExcludeMissing fun trialAmountDiscount(trialAmountDiscount: JsonField) = apply { this.trialAmountDiscount = trialAmountDiscount } @@ -160,26 +162,29 @@ private constructor( trialPercentageDiscount(JsonField.of(trialPercentageDiscount)) /** Only available if discount_type is `trial` */ - @JsonProperty("trial_percentage_discount") - @ExcludeMissing fun trialPercentageDiscount(trialPercentageDiscount: JsonField) = apply { this.trialPercentageDiscount = trialPercentageDiscount } fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() - this.additionalProperties.putAll(additionalProperties) + putAllAdditionalProperties(additionalProperties) } - @JsonAnySetter fun putAdditionalProperty(key: String, value: JsonValue) = apply { - this.additionalProperties.put(key, value) + additionalProperties.put(key, value) } fun putAllAdditionalProperties(additionalProperties: Map) = apply { this.additionalProperties.putAll(additionalProperties) } + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + fun build(): TrialDiscount = TrialDiscount( discountType, diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/services/async/DimensionalPriceGroupServiceAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/services/async/DimensionalPriceGroupServiceAsync.kt new file mode 100644 index 00000000..80f07f55 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/services/async/DimensionalPriceGroupServiceAsync.kt @@ -0,0 +1,48 @@ +// File generated from our OpenAPI spec by Stainless. + +@file:Suppress("OVERLOADS_INTERFACE") // See https://youtrack.jetbrains.com/issue/KT-36102 + +package com.withorb.api.services.async + +import com.withorb.api.core.RequestOptions +import com.withorb.api.models.DimensionalPriceGroup +import com.withorb.api.models.DimensionalPriceGroupCreateParams +import com.withorb.api.models.DimensionalPriceGroupListPageAsync +import com.withorb.api.models.DimensionalPriceGroupListParams +import com.withorb.api.models.DimensionalPriceGroupRetrieveParams +import com.withorb.api.services.async.dimensionalPriceGroups.ExternalDimensionalPriceGroupIdServiceAsync +import java.util.concurrent.CompletableFuture + +interface DimensionalPriceGroupServiceAsync { + + fun externalDimensionalPriceGroupId(): ExternalDimensionalPriceGroupIdServiceAsync + + /** + * A dimensional price group is used to partition the result of a billable metric by a set of + * dimensions. Prices in a price group must specify the parition used to derive their usage. + * + * For example, suppose we have a billable metric that measures the number of widgets used and + * we want to charge differently depending on the color of the widget. We can create a price + * group with a dimension "color" and two prices: one that charges $10 per red widget and one + * that charges $20 per blue widget. + */ + @JvmOverloads + fun create( + params: DimensionalPriceGroupCreateParams, + requestOptions: RequestOptions = RequestOptions.none() + ): CompletableFuture + + /** Fetch dimensional price group */ + @JvmOverloads + fun retrieve( + params: DimensionalPriceGroupRetrieveParams, + requestOptions: RequestOptions = RequestOptions.none() + ): CompletableFuture + + /** List dimensional price groups */ + @JvmOverloads + fun list( + params: DimensionalPriceGroupListParams, + requestOptions: RequestOptions = RequestOptions.none() + ): CompletableFuture +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/services/async/DimensionalPriceGroupServiceAsyncImpl.kt b/orb-java-core/src/main/kotlin/com/withorb/api/services/async/DimensionalPriceGroupServiceAsyncImpl.kt new file mode 100644 index 00000000..1e98f366 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/services/async/DimensionalPriceGroupServiceAsyncImpl.kt @@ -0,0 +1,136 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.services.async + +import com.withorb.api.core.ClientOptions +import com.withorb.api.core.RequestOptions +import com.withorb.api.core.handlers.errorHandler +import com.withorb.api.core.handlers.jsonHandler +import com.withorb.api.core.handlers.withErrorHandler +import com.withorb.api.core.http.HttpMethod +import com.withorb.api.core.http.HttpRequest +import com.withorb.api.core.http.HttpResponse.Handler +import com.withorb.api.core.json +import com.withorb.api.errors.OrbError +import com.withorb.api.models.DimensionalPriceGroup +import com.withorb.api.models.DimensionalPriceGroupCreateParams +import com.withorb.api.models.DimensionalPriceGroupListPageAsync +import com.withorb.api.models.DimensionalPriceGroupListParams +import com.withorb.api.models.DimensionalPriceGroupRetrieveParams +import com.withorb.api.services.async.dimensionalPriceGroups.ExternalDimensionalPriceGroupIdServiceAsync +import com.withorb.api.services.async.dimensionalPriceGroups.ExternalDimensionalPriceGroupIdServiceAsyncImpl +import java.util.concurrent.CompletableFuture + +class DimensionalPriceGroupServiceAsyncImpl +constructor( + private val clientOptions: ClientOptions, +) : DimensionalPriceGroupServiceAsync { + + private val errorHandler: Handler = errorHandler(clientOptions.jsonMapper) + + private val externalDimensionalPriceGroupId: + ExternalDimensionalPriceGroupIdServiceAsync by lazy { + ExternalDimensionalPriceGroupIdServiceAsyncImpl(clientOptions) + } + + override fun externalDimensionalPriceGroupId(): ExternalDimensionalPriceGroupIdServiceAsync = + externalDimensionalPriceGroupId + + private val createHandler: Handler = + jsonHandler(clientOptions.jsonMapper).withErrorHandler(errorHandler) + + /** + * A dimensional price group is used to partition the result of a billable metric by a set of + * dimensions. Prices in a price group must specify the parition used to derive their usage. + * + * For example, suppose we have a billable metric that measures the number of widgets used and + * we want to charge differently depending on the color of the widget. We can create a price + * group with a dimension "color" and two prices: one that charges $10 per red widget and one + * that charges $20 per blue widget. + */ + override fun create( + params: DimensionalPriceGroupCreateParams, + requestOptions: RequestOptions + ): CompletableFuture { + val request = + HttpRequest.builder() + .method(HttpMethod.POST) + .addPathSegments("dimensional_price_groups") + .putAllQueryParams(clientOptions.queryParams) + .replaceAllQueryParams(params.getQueryParams()) + .putAllHeaders(clientOptions.headers) + .replaceAllHeaders(params.getHeaders()) + .body(json(clientOptions.jsonMapper, params.getBody())) + .build() + return clientOptions.httpClient.executeAsync(request, requestOptions).thenApply { response + -> + response + .use { createHandler.handle(it) } + .apply { + if (requestOptions.responseValidation ?: clientOptions.responseValidation) { + validate() + } + } + } + } + + private val retrieveHandler: Handler = + jsonHandler(clientOptions.jsonMapper).withErrorHandler(errorHandler) + + /** Fetch dimensional price group */ + override fun retrieve( + params: DimensionalPriceGroupRetrieveParams, + requestOptions: RequestOptions + ): CompletableFuture { + val request = + HttpRequest.builder() + .method(HttpMethod.GET) + .addPathSegments("dimensional_price_groups", params.getPathParam(0)) + .putAllQueryParams(clientOptions.queryParams) + .replaceAllQueryParams(params.getQueryParams()) + .putAllHeaders(clientOptions.headers) + .replaceAllHeaders(params.getHeaders()) + .build() + return clientOptions.httpClient.executeAsync(request, requestOptions).thenApply { response + -> + response + .use { retrieveHandler.handle(it) } + .apply { + if (requestOptions.responseValidation ?: clientOptions.responseValidation) { + validate() + } + } + } + } + + private val listHandler: Handler = + jsonHandler(clientOptions.jsonMapper) + .withErrorHandler(errorHandler) + + /** List dimensional price groups */ + override fun list( + params: DimensionalPriceGroupListParams, + requestOptions: RequestOptions + ): CompletableFuture { + val request = + HttpRequest.builder() + .method(HttpMethod.GET) + .addPathSegments("dimensional_price_groups") + .putAllQueryParams(clientOptions.queryParams) + .replaceAllQueryParams(params.getQueryParams()) + .putAllHeaders(clientOptions.headers) + .replaceAllHeaders(params.getHeaders()) + .build() + return clientOptions.httpClient.executeAsync(request, requestOptions).thenApply { response + -> + response + .use { listHandler.handle(it) } + .apply { + if (requestOptions.responseValidation ?: clientOptions.responseValidation) { + validate() + } + } + .let { DimensionalPriceGroupListPageAsync.of(this, params, it) } + } + } +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/services/async/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceAsync.kt b/orb-java-core/src/main/kotlin/com/withorb/api/services/async/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceAsync.kt new file mode 100644 index 00000000..62df29ca --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/services/async/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceAsync.kt @@ -0,0 +1,20 @@ +// File generated from our OpenAPI spec by Stainless. + +@file:Suppress("OVERLOADS_INTERFACE") // See https://youtrack.jetbrains.com/issue/KT-36102 + +package com.withorb.api.services.async.dimensionalPriceGroups + +import com.withorb.api.core.RequestOptions +import com.withorb.api.models.DimensionalPriceGroup +import com.withorb.api.models.DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams +import java.util.concurrent.CompletableFuture + +interface ExternalDimensionalPriceGroupIdServiceAsync { + + /** Fetch dimensional price group by external ID */ + @JvmOverloads + fun retrieve( + params: DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams, + requestOptions: RequestOptions = RequestOptions.none() + ): CompletableFuture +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/services/async/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceAsyncImpl.kt b/orb-java-core/src/main/kotlin/com/withorb/api/services/async/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceAsyncImpl.kt new file mode 100644 index 00000000..3edb1a5d --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/services/async/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceAsyncImpl.kt @@ -0,0 +1,57 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.services.async.dimensionalPriceGroups + +import com.withorb.api.core.ClientOptions +import com.withorb.api.core.RequestOptions +import com.withorb.api.core.handlers.errorHandler +import com.withorb.api.core.handlers.jsonHandler +import com.withorb.api.core.handlers.withErrorHandler +import com.withorb.api.core.http.HttpMethod +import com.withorb.api.core.http.HttpRequest +import com.withorb.api.core.http.HttpResponse.Handler +import com.withorb.api.errors.OrbError +import com.withorb.api.models.DimensionalPriceGroup +import com.withorb.api.models.DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams +import java.util.concurrent.CompletableFuture + +class ExternalDimensionalPriceGroupIdServiceAsyncImpl +constructor( + private val clientOptions: ClientOptions, +) : ExternalDimensionalPriceGroupIdServiceAsync { + + private val errorHandler: Handler = errorHandler(clientOptions.jsonMapper) + + private val retrieveHandler: Handler = + jsonHandler(clientOptions.jsonMapper).withErrorHandler(errorHandler) + + /** Fetch dimensional price group by external ID */ + override fun retrieve( + params: DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams, + requestOptions: RequestOptions + ): CompletableFuture { + val request = + HttpRequest.builder() + .method(HttpMethod.GET) + .addPathSegments( + "dimensional_price_groups", + "external_dimensional_price_group_id", + params.getPathParam(0) + ) + .putAllQueryParams(clientOptions.queryParams) + .replaceAllQueryParams(params.getQueryParams()) + .putAllHeaders(clientOptions.headers) + .replaceAllHeaders(params.getHeaders()) + .build() + return clientOptions.httpClient.executeAsync(request, requestOptions).thenApply { response + -> + response + .use { retrieveHandler.handle(it) } + .apply { + if (requestOptions.responseValidation ?: clientOptions.responseValidation) { + validate() + } + } + } + } +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/DimensionalPriceGroupService.kt b/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/DimensionalPriceGroupService.kt new file mode 100644 index 00000000..72430c8d --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/DimensionalPriceGroupService.kt @@ -0,0 +1,47 @@ +// File generated from our OpenAPI spec by Stainless. + +@file:Suppress("OVERLOADS_INTERFACE") // See https://youtrack.jetbrains.com/issue/KT-36102 + +package com.withorb.api.services.blocking + +import com.withorb.api.core.RequestOptions +import com.withorb.api.models.DimensionalPriceGroup +import com.withorb.api.models.DimensionalPriceGroupCreateParams +import com.withorb.api.models.DimensionalPriceGroupListPage +import com.withorb.api.models.DimensionalPriceGroupListParams +import com.withorb.api.models.DimensionalPriceGroupRetrieveParams +import com.withorb.api.services.blocking.dimensionalPriceGroups.ExternalDimensionalPriceGroupIdService + +interface DimensionalPriceGroupService { + + fun externalDimensionalPriceGroupId(): ExternalDimensionalPriceGroupIdService + + /** + * A dimensional price group is used to partition the result of a billable metric by a set of + * dimensions. Prices in a price group must specify the parition used to derive their usage. + * + * For example, suppose we have a billable metric that measures the number of widgets used and + * we want to charge differently depending on the color of the widget. We can create a price + * group with a dimension "color" and two prices: one that charges $10 per red widget and one + * that charges $20 per blue widget. + */ + @JvmOverloads + fun create( + params: DimensionalPriceGroupCreateParams, + requestOptions: RequestOptions = RequestOptions.none() + ): DimensionalPriceGroup + + /** Fetch dimensional price group */ + @JvmOverloads + fun retrieve( + params: DimensionalPriceGroupRetrieveParams, + requestOptions: RequestOptions = RequestOptions.none() + ): DimensionalPriceGroup + + /** List dimensional price groups */ + @JvmOverloads + fun list( + params: DimensionalPriceGroupListParams, + requestOptions: RequestOptions = RequestOptions.none() + ): DimensionalPriceGroupListPage +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/DimensionalPriceGroupServiceImpl.kt b/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/DimensionalPriceGroupServiceImpl.kt new file mode 100644 index 00000000..2dfa3712 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/DimensionalPriceGroupServiceImpl.kt @@ -0,0 +1,131 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.services.blocking + +import com.withorb.api.core.ClientOptions +import com.withorb.api.core.RequestOptions +import com.withorb.api.core.handlers.errorHandler +import com.withorb.api.core.handlers.jsonHandler +import com.withorb.api.core.handlers.withErrorHandler +import com.withorb.api.core.http.HttpMethod +import com.withorb.api.core.http.HttpRequest +import com.withorb.api.core.http.HttpResponse.Handler +import com.withorb.api.core.json +import com.withorb.api.errors.OrbError +import com.withorb.api.models.DimensionalPriceGroup +import com.withorb.api.models.DimensionalPriceGroupCreateParams +import com.withorb.api.models.DimensionalPriceGroupListPage +import com.withorb.api.models.DimensionalPriceGroupListParams +import com.withorb.api.models.DimensionalPriceGroupRetrieveParams +import com.withorb.api.services.blocking.dimensionalPriceGroups.ExternalDimensionalPriceGroupIdService +import com.withorb.api.services.blocking.dimensionalPriceGroups.ExternalDimensionalPriceGroupIdServiceImpl + +class DimensionalPriceGroupServiceImpl +constructor( + private val clientOptions: ClientOptions, +) : DimensionalPriceGroupService { + + private val errorHandler: Handler = errorHandler(clientOptions.jsonMapper) + + private val externalDimensionalPriceGroupId: ExternalDimensionalPriceGroupIdService by lazy { + ExternalDimensionalPriceGroupIdServiceImpl(clientOptions) + } + + override fun externalDimensionalPriceGroupId(): ExternalDimensionalPriceGroupIdService = + externalDimensionalPriceGroupId + + private val createHandler: Handler = + jsonHandler(clientOptions.jsonMapper).withErrorHandler(errorHandler) + + /** + * A dimensional price group is used to partition the result of a billable metric by a set of + * dimensions. Prices in a price group must specify the parition used to derive their usage. + * + * For example, suppose we have a billable metric that measures the number of widgets used and + * we want to charge differently depending on the color of the widget. We can create a price + * group with a dimension "color" and two prices: one that charges $10 per red widget and one + * that charges $20 per blue widget. + */ + override fun create( + params: DimensionalPriceGroupCreateParams, + requestOptions: RequestOptions + ): DimensionalPriceGroup { + val request = + HttpRequest.builder() + .method(HttpMethod.POST) + .addPathSegments("dimensional_price_groups") + .putAllQueryParams(clientOptions.queryParams) + .replaceAllQueryParams(params.getQueryParams()) + .putAllHeaders(clientOptions.headers) + .replaceAllHeaders(params.getHeaders()) + .body(json(clientOptions.jsonMapper, params.getBody())) + .build() + return clientOptions.httpClient.execute(request, requestOptions).let { response -> + response + .use { createHandler.handle(it) } + .apply { + if (requestOptions.responseValidation ?: clientOptions.responseValidation) { + validate() + } + } + } + } + + private val retrieveHandler: Handler = + jsonHandler(clientOptions.jsonMapper).withErrorHandler(errorHandler) + + /** Fetch dimensional price group */ + override fun retrieve( + params: DimensionalPriceGroupRetrieveParams, + requestOptions: RequestOptions + ): DimensionalPriceGroup { + val request = + HttpRequest.builder() + .method(HttpMethod.GET) + .addPathSegments("dimensional_price_groups", params.getPathParam(0)) + .putAllQueryParams(clientOptions.queryParams) + .replaceAllQueryParams(params.getQueryParams()) + .putAllHeaders(clientOptions.headers) + .replaceAllHeaders(params.getHeaders()) + .build() + return clientOptions.httpClient.execute(request, requestOptions).let { response -> + response + .use { retrieveHandler.handle(it) } + .apply { + if (requestOptions.responseValidation ?: clientOptions.responseValidation) { + validate() + } + } + } + } + + private val listHandler: Handler = + jsonHandler(clientOptions.jsonMapper) + .withErrorHandler(errorHandler) + + /** List dimensional price groups */ + override fun list( + params: DimensionalPriceGroupListParams, + requestOptions: RequestOptions + ): DimensionalPriceGroupListPage { + val request = + HttpRequest.builder() + .method(HttpMethod.GET) + .addPathSegments("dimensional_price_groups") + .putAllQueryParams(clientOptions.queryParams) + .replaceAllQueryParams(params.getQueryParams()) + .putAllHeaders(clientOptions.headers) + .replaceAllHeaders(params.getHeaders()) + .build() + return clientOptions.httpClient.execute(request, requestOptions).let { response -> + response + .use { listHandler.handle(it) } + .apply { + if (requestOptions.responseValidation ?: clientOptions.responseValidation) { + validate() + } + } + .let { DimensionalPriceGroupListPage.of(this, params, it) } + } + } +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdService.kt b/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdService.kt new file mode 100644 index 00000000..aeec7ee3 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdService.kt @@ -0,0 +1,19 @@ +// File generated from our OpenAPI spec by Stainless. + +@file:Suppress("OVERLOADS_INTERFACE") // See https://youtrack.jetbrains.com/issue/KT-36102 + +package com.withorb.api.services.blocking.dimensionalPriceGroups + +import com.withorb.api.core.RequestOptions +import com.withorb.api.models.DimensionalPriceGroup +import com.withorb.api.models.DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams + +interface ExternalDimensionalPriceGroupIdService { + + /** Fetch dimensional price group by external ID */ + @JvmOverloads + fun retrieve( + params: DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams, + requestOptions: RequestOptions = RequestOptions.none() + ): DimensionalPriceGroup +} diff --git a/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceImpl.kt b/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceImpl.kt new file mode 100644 index 00000000..9dd1ef62 --- /dev/null +++ b/orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceImpl.kt @@ -0,0 +1,55 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.services.blocking.dimensionalPriceGroups + +import com.withorb.api.core.ClientOptions +import com.withorb.api.core.RequestOptions +import com.withorb.api.core.handlers.errorHandler +import com.withorb.api.core.handlers.jsonHandler +import com.withorb.api.core.handlers.withErrorHandler +import com.withorb.api.core.http.HttpMethod +import com.withorb.api.core.http.HttpRequest +import com.withorb.api.core.http.HttpResponse.Handler +import com.withorb.api.errors.OrbError +import com.withorb.api.models.DimensionalPriceGroup +import com.withorb.api.models.DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams + +class ExternalDimensionalPriceGroupIdServiceImpl +constructor( + private val clientOptions: ClientOptions, +) : ExternalDimensionalPriceGroupIdService { + + private val errorHandler: Handler = errorHandler(clientOptions.jsonMapper) + + private val retrieveHandler: Handler = + jsonHandler(clientOptions.jsonMapper).withErrorHandler(errorHandler) + + /** Fetch dimensional price group by external ID */ + override fun retrieve( + params: DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams, + requestOptions: RequestOptions + ): DimensionalPriceGroup { + val request = + HttpRequest.builder() + .method(HttpMethod.GET) + .addPathSegments( + "dimensional_price_groups", + "external_dimensional_price_group_id", + params.getPathParam(0) + ) + .putAllQueryParams(clientOptions.queryParams) + .replaceAllQueryParams(params.getQueryParams()) + .putAllHeaders(clientOptions.headers) + .replaceAllHeaders(params.getHeaders()) + .build() + return clientOptions.httpClient.execute(request, requestOptions).let { response -> + response + .use { retrieveHandler.handle(it) } + .apply { + if (requestOptions.responseValidation ?: clientOptions.responseValidation) { + validate() + } + } + } + } +} diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForCustomerParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForCustomerParamsTest.kt index 134fae4f..5e3a30c2 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForCustomerParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForCustomerParamsTest.kt @@ -33,7 +33,7 @@ class AlertCreateForCustomerParamsTest { assertThat(body.currency()).isEqualTo("currency") assertThat(body.type()).isEqualTo(AlertCreateForCustomerParams.Type.USAGE_EXCEEDED) assertThat(body.thresholds()) - .isEqualTo(listOf(AlertCreateForCustomerParams.Threshold.builder().value(0.0).build())) + .contains(listOf(AlertCreateForCustomerParams.Threshold.builder().value(0.0).build())) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForExternalCustomerParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForExternalCustomerParamsTest.kt index 89e46e89..75a35e8e 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForExternalCustomerParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForExternalCustomerParamsTest.kt @@ -37,7 +37,7 @@ class AlertCreateForExternalCustomerParamsTest { assertThat(body.currency()).isEqualTo("currency") assertThat(body.type()).isEqualTo(AlertCreateForExternalCustomerParams.Type.USAGE_EXCEEDED) assertThat(body.thresholds()) - .isEqualTo( + .contains( listOf(AlertCreateForExternalCustomerParams.Threshold.builder().value(0.0).build()) ) } diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForSubscriptionParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForSubscriptionParamsTest.kt index 525e098a..030e01b4 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForSubscriptionParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/AlertCreateForSubscriptionParamsTest.kt @@ -37,7 +37,7 @@ class AlertCreateForSubscriptionParamsTest { listOf(AlertCreateForSubscriptionParams.Threshold.builder().value(0.0).build()) ) assertThat(body.type()).isEqualTo(AlertCreateForSubscriptionParams.Type.USAGE_EXCEEDED) - assertThat(body.metricId()).isEqualTo("metric_id") + assertThat(body.metricId()).contains("metric_id") } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/CouponCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/CouponCreateParamsTest.kt index cc019b39..912b77e6 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/CouponCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/CouponCreateParamsTest.kt @@ -61,8 +61,8 @@ class CouponCreateParamsTest { ) ) assertThat(body.redemptionCode()).isEqualTo("HALFOFF") - assertThat(body.durationInMonths()).isEqualTo(12L) - assertThat(body.maxRedemptions()).isEqualTo(1L) + assertThat(body.durationInMonths()).contains(12L) + assertThat(body.maxRedemptions()).contains(1L) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/CreditNoteCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/CreditNoteCreateParamsTest.kt index dc09f00f..0372f78c 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/CreditNoteCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/CreditNoteCreateParamsTest.kt @@ -49,8 +49,8 @@ class CreditNoteCreateParamsTest { .build() ) ) - assertThat(body.memo()).isEqualTo("An optional memo for my credit note.") - assertThat(body.reason()).isEqualTo(CreditNoteCreateParams.Reason.DUPLICATE) + assertThat(body.memo()).contains("An optional memo for my credit note.") + assertThat(body.reason()).contains(CreditNoteCreateParams.Reason.DUPLICATE) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateParamsTest.kt index 8ce8081e..69fed9c6 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerBalanceTransactionCreateParamsTest.kt @@ -30,7 +30,7 @@ class CustomerBalanceTransactionCreateParamsTest { assertThat(body).isNotNull assertThat(body.amount()).isEqualTo("amount") assertThat(body.type()).isEqualTo(CustomerBalanceTransactionCreateParams.Type.INCREMENT) - assertThat(body.description()).isEqualTo("description") + assertThat(body.description()).contains("description") } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreateParamsTest.kt index 5fcbfdfe..ef1c87dd 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreateParamsTest.kt @@ -168,7 +168,7 @@ class CustomerCreateParamsTest { assertThat(body.email()).isEqualTo("dev@stainlessapi.com") assertThat(body.name()).isEqualTo("x") assertThat(body.accountingSyncConfiguration()) - .isEqualTo( + .contains( CustomerCreateParams.AccountingSyncConfiguration.builder() .accountingProviders( listOf( @@ -182,10 +182,10 @@ class CustomerCreateParamsTest { .excluded(true) .build() ) - assertThat(body.additionalEmails()).isEqualTo(listOf("string")) - assertThat(body.autoCollection()).isEqualTo(true) + assertThat(body.additionalEmails()).contains(listOf("string")) + assertThat(body.autoCollection()).contains(true) assertThat(body.billingAddress()) - .isEqualTo( + .contains( CustomerCreateParams.BillingAddress.builder() .city("city") .country("country") @@ -195,22 +195,21 @@ class CustomerCreateParamsTest { .state("state") .build() ) - assertThat(body.currency()).isEqualTo("currency") - assertThat(body.emailDelivery()).isEqualTo(true) - assertThat(body.externalCustomerId()).isEqualTo("external_customer_id") + assertThat(body.currency()).contains("currency") + assertThat(body.emailDelivery()).contains(true) + assertThat(body.externalCustomerId()).contains("external_customer_id") assertThat(body.metadata()) - .isEqualTo( + .contains( CustomerCreateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() ) - assertThat(body.paymentProvider()) - .isEqualTo(CustomerCreateParams.PaymentProvider.QUICKBOOKS) - assertThat(body.paymentProviderId()).isEqualTo("payment_provider_id") + assertThat(body.paymentProvider()).contains(CustomerCreateParams.PaymentProvider.QUICKBOOKS) + assertThat(body.paymentProviderId()).contains("payment_provider_id") assertThat(body.reportingConfiguration()) - .isEqualTo(CustomerCreateParams.ReportingConfiguration.builder().exempt(true).build()) + .contains(CustomerCreateParams.ReportingConfiguration.builder().exempt(true).build()) assertThat(body.shippingAddress()) - .isEqualTo( + .contains( CustomerCreateParams.ShippingAddress.builder() .city("city") .country("country") @@ -221,7 +220,7 @@ class CustomerCreateParamsTest { .build() ) assertThat(body.taxConfiguration()) - .isEqualTo( + .contains( CustomerCreateParams.TaxConfiguration.ofNewAvalaraTaxConfiguration( CustomerCreateParams.TaxConfiguration.NewAvalaraTaxConfiguration.builder() .taxExempt(true) @@ -235,14 +234,14 @@ class CustomerCreateParamsTest { ) ) assertThat(body.taxId()) - .isEqualTo( + .contains( CustomerCreateParams.TaxId.builder() .country(CustomerCreateParams.TaxId.Country.AD) .type(CustomerCreateParams.TaxId.Type.AD_NRT) .value("value") .build() ) - assertThat(body.timezone()).isEqualTo("timezone") + assertThat(body.timezone()).contains("timezone") } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdParamsTest.kt index 80ebaef6..14aaa16f 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateByExternalIdParamsTest.kt @@ -63,9 +63,9 @@ class CustomerCreditTopUpCreateByExternalIdParamsTest { ) assertThat(body.perUnitCostBasis()).isEqualTo("per_unit_cost_basis") assertThat(body.threshold()).isEqualTo("threshold") - assertThat(body.expiresAfter()).isEqualTo(0L) + assertThat(body.expiresAfter()).contains(0L) assertThat(body.expiresAfterUnit()) - .isEqualTo(CustomerCreditTopUpCreateByExternalIdParams.ExpiresAfterUnit.DAY) + .contains(CustomerCreditTopUpCreateByExternalIdParams.ExpiresAfterUnit.DAY) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateParamsTest.kt index 83d495b6..5c8d2d3a 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerCreditTopUpCreateParamsTest.kt @@ -63,9 +63,9 @@ class CustomerCreditTopUpCreateParamsTest { ) assertThat(body.perUnitCostBasis()).isEqualTo("per_unit_cost_basis") assertThat(body.threshold()).isEqualTo("threshold") - assertThat(body.expiresAfter()).isEqualTo(0L) + assertThat(body.expiresAfter()).contains(0L) assertThat(body.expiresAfterUnit()) - .isEqualTo(CustomerCreditTopUpCreateParams.ExpiresAfterUnit.DAY) + .contains(CustomerCreditTopUpCreateParams.ExpiresAfterUnit.DAY) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerUpdateByExternalIdParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerUpdateByExternalIdParamsTest.kt index bd290ce8..3f056190 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerUpdateByExternalIdParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerUpdateByExternalIdParamsTest.kt @@ -176,7 +176,7 @@ class CustomerUpdateByExternalIdParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.accountingSyncConfiguration()) - .isEqualTo( + .contains( CustomerUpdateByExternalIdParams.AccountingSyncConfiguration.builder() .accountingProviders( listOf( @@ -191,10 +191,10 @@ class CustomerUpdateByExternalIdParamsTest { .excluded(true) .build() ) - assertThat(body.additionalEmails()).isEqualTo(listOf("string")) - assertThat(body.autoCollection()).isEqualTo(true) + assertThat(body.additionalEmails()).contains(listOf("string")) + assertThat(body.autoCollection()).contains(true) assertThat(body.billingAddress()) - .isEqualTo( + .contains( CustomerUpdateByExternalIdParams.BillingAddress.builder() .city("city") .country("country") @@ -204,28 +204,28 @@ class CustomerUpdateByExternalIdParamsTest { .state("state") .build() ) - assertThat(body.currency()).isEqualTo("currency") - assertThat(body.email()).isEqualTo("dev@stainlessapi.com") - assertThat(body.emailDelivery()).isEqualTo(true) - assertThat(body.externalCustomerId()).isEqualTo("external_customer_id") + assertThat(body.currency()).contains("currency") + assertThat(body.email()).contains("dev@stainlessapi.com") + assertThat(body.emailDelivery()).contains(true) + assertThat(body.externalCustomerId()).contains("external_customer_id") assertThat(body.metadata()) - .isEqualTo( + .contains( CustomerUpdateByExternalIdParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() ) - assertThat(body.name()).isEqualTo("name") + assertThat(body.name()).contains("name") assertThat(body.paymentProvider()) - .isEqualTo(CustomerUpdateByExternalIdParams.PaymentProvider.QUICKBOOKS) - assertThat(body.paymentProviderId()).isEqualTo("payment_provider_id") + .contains(CustomerUpdateByExternalIdParams.PaymentProvider.QUICKBOOKS) + assertThat(body.paymentProviderId()).contains("payment_provider_id") assertThat(body.reportingConfiguration()) - .isEqualTo( + .contains( CustomerUpdateByExternalIdParams.ReportingConfiguration.builder() .exempt(true) .build() ) assertThat(body.shippingAddress()) - .isEqualTo( + .contains( CustomerUpdateByExternalIdParams.ShippingAddress.builder() .city("city") .country("country") @@ -236,7 +236,7 @@ class CustomerUpdateByExternalIdParamsTest { .build() ) assertThat(body.taxConfiguration()) - .isEqualTo( + .contains( CustomerUpdateByExternalIdParams.TaxConfiguration.ofNewAvalaraTaxConfiguration( CustomerUpdateByExternalIdParams.TaxConfiguration.NewAvalaraTaxConfiguration .builder() @@ -252,7 +252,7 @@ class CustomerUpdateByExternalIdParamsTest { ) ) assertThat(body.taxId()) - .isEqualTo( + .contains( CustomerUpdateByExternalIdParams.TaxId.builder() .country(CustomerUpdateByExternalIdParams.TaxId.Country.AD) .type(CustomerUpdateByExternalIdParams.TaxId.Type.AD_NRT) diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerUpdateParamsTest.kt index 3c5c4fa1..b820234b 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/CustomerUpdateParamsTest.kt @@ -166,7 +166,7 @@ class CustomerUpdateParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.accountingSyncConfiguration()) - .isEqualTo( + .contains( CustomerUpdateParams.AccountingSyncConfiguration.builder() .accountingProviders( listOf( @@ -180,10 +180,10 @@ class CustomerUpdateParamsTest { .excluded(true) .build() ) - assertThat(body.additionalEmails()).isEqualTo(listOf("string")) - assertThat(body.autoCollection()).isEqualTo(true) + assertThat(body.additionalEmails()).contains(listOf("string")) + assertThat(body.autoCollection()).contains(true) assertThat(body.billingAddress()) - .isEqualTo( + .contains( CustomerUpdateParams.BillingAddress.builder() .city("city") .country("country") @@ -193,24 +193,23 @@ class CustomerUpdateParamsTest { .state("state") .build() ) - assertThat(body.currency()).isEqualTo("currency") - assertThat(body.email()).isEqualTo("dev@stainlessapi.com") - assertThat(body.emailDelivery()).isEqualTo(true) - assertThat(body.externalCustomerId()).isEqualTo("external_customer_id") + assertThat(body.currency()).contains("currency") + assertThat(body.email()).contains("dev@stainlessapi.com") + assertThat(body.emailDelivery()).contains(true) + assertThat(body.externalCustomerId()).contains("external_customer_id") assertThat(body.metadata()) - .isEqualTo( + .contains( CustomerUpdateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() ) - assertThat(body.name()).isEqualTo("name") - assertThat(body.paymentProvider()) - .isEqualTo(CustomerUpdateParams.PaymentProvider.QUICKBOOKS) - assertThat(body.paymentProviderId()).isEqualTo("payment_provider_id") + assertThat(body.name()).contains("name") + assertThat(body.paymentProvider()).contains(CustomerUpdateParams.PaymentProvider.QUICKBOOKS) + assertThat(body.paymentProviderId()).contains("payment_provider_id") assertThat(body.reportingConfiguration()) - .isEqualTo(CustomerUpdateParams.ReportingConfiguration.builder().exempt(true).build()) + .contains(CustomerUpdateParams.ReportingConfiguration.builder().exempt(true).build()) assertThat(body.shippingAddress()) - .isEqualTo( + .contains( CustomerUpdateParams.ShippingAddress.builder() .city("city") .country("country") @@ -221,7 +220,7 @@ class CustomerUpdateParamsTest { .build() ) assertThat(body.taxConfiguration()) - .isEqualTo( + .contains( CustomerUpdateParams.TaxConfiguration.ofNewAvalaraTaxConfiguration( CustomerUpdateParams.TaxConfiguration.NewAvalaraTaxConfiguration.builder() .taxExempt(true) @@ -235,7 +234,7 @@ class CustomerUpdateParamsTest { ) ) assertThat(body.taxId()) - .isEqualTo( + .contains( CustomerUpdateParams.TaxId.builder() .country(CustomerUpdateParams.TaxId.Country.AD) .type(CustomerUpdateParams.TaxId.Type.AD_NRT) diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupCreateParamsTest.kt new file mode 100644 index 00000000..e8704748 --- /dev/null +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupCreateParamsTest.kt @@ -0,0 +1,69 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.withorb.api.core.JsonValue +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test + +class DimensionalPriceGroupCreateParamsTest { + + @Test + fun createDimensionalPriceGroupCreateParams() { + DimensionalPriceGroupCreateParams.builder() + .billableMetricId("billable_metric_id") + .dimensions(listOf("region", "instance_type")) + .name("name") + .externalDimensionalPriceGroupId("external_dimensional_price_group_id") + .metadata( + DimensionalPriceGroupCreateParams.Metadata.builder() + .putAdditionalProperty("foo", JsonValue.from("string")) + .build() + ) + .build() + } + + @Test + fun getBody() { + val params = + DimensionalPriceGroupCreateParams.builder() + .billableMetricId("billable_metric_id") + .dimensions(listOf("region", "instance_type")) + .name("name") + .externalDimensionalPriceGroupId("external_dimensional_price_group_id") + .metadata( + DimensionalPriceGroupCreateParams.Metadata.builder() + .putAdditionalProperty("foo", JsonValue.from("string")) + .build() + ) + .build() + val body = params.getBody() + assertThat(body).isNotNull + assertThat(body.billableMetricId()).isEqualTo("billable_metric_id") + assertThat(body.dimensions()).isEqualTo(listOf("region", "instance_type")) + assertThat(body.name()).isEqualTo("name") + assertThat(body.externalDimensionalPriceGroupId()) + .contains("external_dimensional_price_group_id") + assertThat(body.metadata()) + .contains( + DimensionalPriceGroupCreateParams.Metadata.builder() + .putAdditionalProperty("foo", JsonValue.from("string")) + .build() + ) + } + + @Test + fun getBodyWithoutOptionalFields() { + val params = + DimensionalPriceGroupCreateParams.builder() + .billableMetricId("billable_metric_id") + .dimensions(listOf("region", "instance_type")) + .name("name") + .build() + val body = params.getBody() + assertThat(body).isNotNull + assertThat(body.billableMetricId()).isEqualTo("billable_metric_id") + assertThat(body.dimensions()).isEqualTo(listOf("region", "instance_type")) + assertThat(body.name()).isEqualTo("name") + } +} diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParamsTest.kt new file mode 100644 index 00000000..2553926c --- /dev/null +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParamsTest.kt @@ -0,0 +1,29 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test + +class DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParamsTest { + + @Test + fun createDimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams() { + DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams.builder() + .externalDimensionalPriceGroupId("external_dimensional_price_group_id") + .build() + } + + @Test + fun getPathParam() { + val params = + DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams.builder() + .externalDimensionalPriceGroupId("external_dimensional_price_group_id") + .build() + assertThat(params).isNotNull + // path param "externalDimensionalPriceGroupId" + assertThat(params.getPathParam(0)).isEqualTo("external_dimensional_price_group_id") + // out-of-bound path param + assertThat(params.getPathParam(1)).isEqualTo("") + } +} diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupListParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupListParamsTest.kt new file mode 100644 index 00000000..4234674b --- /dev/null +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupListParamsTest.kt @@ -0,0 +1,31 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.withorb.api.core.http.QueryParams +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test + +class DimensionalPriceGroupListParamsTest { + + @Test + fun createDimensionalPriceGroupListParams() { + DimensionalPriceGroupListParams.builder().cursor("cursor").limit(1L).build() + } + + @Test + fun getQueryParams() { + val params = DimensionalPriceGroupListParams.builder().cursor("cursor").limit(1L).build() + val expected = QueryParams.builder() + expected.put("cursor", "cursor") + expected.put("limit", "1") + assertThat(params.getQueryParams()).isEqualTo(expected.build()) + } + + @Test + fun getQueryParamsWithoutOptionalFields() { + val params = DimensionalPriceGroupListParams.builder().build() + val expected = QueryParams.builder() + assertThat(params.getQueryParams()).isEqualTo(expected.build()) + } +} diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupRetrieveParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupRetrieveParamsTest.kt new file mode 100644 index 00000000..7ca5645c --- /dev/null +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupRetrieveParamsTest.kt @@ -0,0 +1,29 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test + +class DimensionalPriceGroupRetrieveParamsTest { + + @Test + fun createDimensionalPriceGroupRetrieveParams() { + DimensionalPriceGroupRetrieveParams.builder() + .dimensionalPriceGroupId("dimensional_price_group_id") + .build() + } + + @Test + fun getPathParam() { + val params = + DimensionalPriceGroupRetrieveParams.builder() + .dimensionalPriceGroupId("dimensional_price_group_id") + .build() + assertThat(params).isNotNull + // path param "dimensionalPriceGroupId" + assertThat(params.getPathParam(0)).isEqualTo("dimensional_price_group_id") + // out-of-bound path param + assertThat(params.getPathParam(1)).isEqualTo("") + } +} diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupTest.kt new file mode 100644 index 00000000..6a8120df --- /dev/null +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupTest.kt @@ -0,0 +1,40 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.withorb.api.core.JsonValue +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test + +class DimensionalPriceGroupTest { + + @Test + fun createDimensionalPriceGroup() { + val dimensionalPriceGroup = + DimensionalPriceGroup.builder() + .id("id") + .billableMetricId("billable_metric_id") + .dimensions(listOf("region", "instance_type")) + .externalDimensionalPriceGroupId("my_dimensional_price_group_id") + .metadata( + DimensionalPriceGroup.Metadata.builder() + .putAdditionalProperty("foo", JsonValue.from("string")) + .build() + ) + .name("name") + .build() + assertThat(dimensionalPriceGroup).isNotNull + assertThat(dimensionalPriceGroup.id()).isEqualTo("id") + assertThat(dimensionalPriceGroup.billableMetricId()).isEqualTo("billable_metric_id") + assertThat(dimensionalPriceGroup.dimensions()).containsExactly("region", "instance_type") + assertThat(dimensionalPriceGroup.externalDimensionalPriceGroupId()) + .contains("my_dimensional_price_group_id") + assertThat(dimensionalPriceGroup.metadata()) + .isEqualTo( + DimensionalPriceGroup.Metadata.builder() + .putAdditionalProperty("foo", JsonValue.from("string")) + .build() + ) + assertThat(dimensionalPriceGroup.name()).isEqualTo("name") + } +} diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupsTest.kt new file mode 100644 index 00000000..84aede79 --- /dev/null +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/DimensionalPriceGroupsTest.kt @@ -0,0 +1,54 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.models + +import com.withorb.api.core.JsonValue +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test + +class DimensionalPriceGroupsTest { + + @Test + fun createDimensionalPriceGroups() { + val dimensionalPriceGroups = + DimensionalPriceGroups.builder() + .data( + listOf( + DimensionalPriceGroup.builder() + .id("id") + .billableMetricId("billable_metric_id") + .dimensions(listOf("region", "instance_type")) + .externalDimensionalPriceGroupId("my_dimensional_price_group_id") + .metadata( + DimensionalPriceGroup.Metadata.builder() + .putAdditionalProperty("foo", JsonValue.from("string")) + .build() + ) + .name("name") + .build() + ) + ) + .paginationMetadata( + PaginationMetadata.builder().hasMore(true).nextCursor("next_cursor").build() + ) + .build() + assertThat(dimensionalPriceGroups).isNotNull + assertThat(dimensionalPriceGroups.data()) + .containsExactly( + DimensionalPriceGroup.builder() + .id("id") + .billableMetricId("billable_metric_id") + .dimensions(listOf("region", "instance_type")) + .externalDimensionalPriceGroupId("my_dimensional_price_group_id") + .metadata( + DimensionalPriceGroup.Metadata.builder() + .putAdditionalProperty("foo", JsonValue.from("string")) + .build() + ) + .name("name") + .build() + ) + assertThat(dimensionalPriceGroups.paginationMetadata()) + .isEqualTo(PaginationMetadata.builder().hasMore(true).nextCursor("next_cursor").build()) + } +} diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/EventBackfillCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/EventBackfillCreateParamsTest.kt index 36e4f4a3..71eedf83 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/EventBackfillCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/EventBackfillCreateParamsTest.kt @@ -38,12 +38,12 @@ class EventBackfillCreateParamsTest { assertThat(body.timeframeEnd()).isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) assertThat(body.timeframeStart()) .isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) - assertThat(body.closeTime()).isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) - assertThat(body.customerId()).isEqualTo("customer_id") + assertThat(body.closeTime()).contains(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) + assertThat(body.customerId()).contains("customer_id") assertThat(body.deprecationFilter()) - .isEqualTo("my_numeric_property > 100 AND my_other_property = 'bar'") - assertThat(body.externalCustomerId()).isEqualTo("external_customer_id") - assertThat(body.replaceExistingEvents()).isEqualTo(true) + .contains("my_numeric_property > 100 AND my_other_property = 'bar'") + assertThat(body.externalCustomerId()).contains("external_customer_id") + assertThat(body.replaceExistingEvents()).contains(true) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/EventSearchParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/EventSearchParamsTest.kt index b3194598..c142d22f 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/EventSearchParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/EventSearchParamsTest.kt @@ -28,9 +28,8 @@ class EventSearchParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.eventIds()).isEqualTo(listOf("string")) - assertThat(body.timeframeEnd()).isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) - assertThat(body.timeframeStart()) - .isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) + assertThat(body.timeframeEnd()).contains(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) + assertThat(body.timeframeStart()).contains(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/EventUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/EventUpdateParamsTest.kt index a88729a8..0108244c 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/EventUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/EventUpdateParamsTest.kt @@ -37,8 +37,8 @@ class EventUpdateParamsTest { assertThat(body.eventName()).isEqualTo("event_name") assertThat(body.properties()).isEqualTo(JsonValue.from(mapOf())) assertThat(body.timestamp()).isEqualTo(OffsetDateTime.parse("2020-12-09T16:09:53Z")) - assertThat(body.customerId()).isEqualTo("customer_id") - assertThat(body.externalCustomerId()).isEqualTo("external_customer_id") + assertThat(body.customerId()).contains("customer_id") + assertThat(body.externalCustomerId()).contains("external_customer_id") } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceCreateParamsTest.kt index f3e18fe5..3b8f17b2 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceCreateParamsTest.kt @@ -122,9 +122,9 @@ class InvoiceCreateParamsTest { ) ) assertThat(body.netTerms()).isEqualTo(0L) - assertThat(body.customerId()).isEqualTo("4khy3nwzktxv7") + assertThat(body.customerId()).contains("4khy3nwzktxv7") assertThat(body.discount()) - .isEqualTo( + .contains( Discount.ofPercentageDiscount( PercentageDiscount.builder() .appliesToPriceIds(listOf("h74gfhdjvn7ujokd", "7hfgtgjnbvc3ujkl")) @@ -134,15 +134,15 @@ class InvoiceCreateParamsTest { .build() ) ) - assertThat(body.externalCustomerId()).isEqualTo("external-customer-id") - assertThat(body.memo()).isEqualTo("An optional memo for my invoice.") + assertThat(body.externalCustomerId()).contains("external-customer-id") + assertThat(body.memo()).contains("An optional memo for my invoice.") assertThat(body.metadata()) - .isEqualTo( + .contains( InvoiceCreateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() ) - assertThat(body.willAutoIssue()).isEqualTo(false) + assertThat(body.willAutoIssue()).contains(false) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceIssueParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceIssueParamsTest.kt index 20e04e12..27a557f5 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceIssueParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceIssueParamsTest.kt @@ -17,7 +17,7 @@ class InvoiceIssueParamsTest { val params = InvoiceIssueParams.builder().invoiceId("invoice_id").synchronous(true).build() val body = params.getBody() assertThat(body).isNotNull - assertThat(body.synchronous()).isEqualTo(true) + assertThat(body.synchronous()).contains(true) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceMarkPaidParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceMarkPaidParamsTest.kt index aec841f3..a03a2585 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceMarkPaidParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceMarkPaidParamsTest.kt @@ -30,8 +30,8 @@ class InvoiceMarkPaidParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.paymentReceivedDate()).isEqualTo(LocalDate.parse("2023-09-22")) - assertThat(body.externalId()).isEqualTo("external_payment_id_123") - assertThat(body.notes()).isEqualTo("notes") + assertThat(body.externalId()).contains("external_payment_id_123") + assertThat(body.notes()).contains("notes") } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceUpdateParamsTest.kt index 28ad78b5..184138e3 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/InvoiceUpdateParamsTest.kt @@ -34,7 +34,7 @@ class InvoiceUpdateParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.metadata()) - .isEqualTo( + .contains( InvoiceUpdateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/ItemUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/ItemUpdateParamsTest.kt index 1bf290b7..b10a7604 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/ItemUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/ItemUpdateParamsTest.kt @@ -45,7 +45,7 @@ class ItemUpdateParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.externalConnections()) - .isEqualTo( + .contains( listOf( ItemUpdateParams.ExternalConnection.builder() .externalConnectionName( @@ -55,7 +55,7 @@ class ItemUpdateParamsTest { .build() ) ) - assertThat(body.name()).isEqualTo("name") + assertThat(body.name()).contains("name") } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/MetricCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/MetricCreateParamsTest.kt index 81769e3c..afe703c9 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/MetricCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/MetricCreateParamsTest.kt @@ -39,13 +39,13 @@ class MetricCreateParamsTest { .build() val body = params.getBody() assertThat(body).isNotNull - assertThat(body.description()).isEqualTo("Sum of bytes downloaded in fast mode") + assertThat(body.description()).contains("Sum of bytes downloaded in fast mode") assertThat(body.itemId()).isEqualTo("item_id") assertThat(body.name()).isEqualTo("Bytes downloaded") assertThat(body.sql()) .isEqualTo("SELECT sum(bytes_downloaded) FROM events WHERE download_speed = 'fast'") assertThat(body.metadata()) - .isEqualTo( + .contains( MetricCreateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/MetricUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/MetricUpdateParamsTest.kt index fad66474..8e8fb984 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/MetricUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/MetricUpdateParamsTest.kt @@ -34,7 +34,7 @@ class MetricUpdateParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.metadata()) - .isEqualTo( + .contains( MetricUpdateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanCreateParamsTest.kt index 5ed003e1..1d5ddeeb 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanCreateParamsTest.kt @@ -207,16 +207,16 @@ class PlanCreateParamsTest { ) ) ) - assertThat(body.defaultInvoiceMemo()).isEqualTo("default_invoice_memo") - assertThat(body.externalPlanId()).isEqualTo("external_plan_id") + assertThat(body.defaultInvoiceMemo()).contains("default_invoice_memo") + assertThat(body.externalPlanId()).contains("external_plan_id") assertThat(body.metadata()) - .isEqualTo( + .contains( PlanCreateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() ) - assertThat(body.netTerms()).isEqualTo(0L) - assertThat(body.status()).isEqualTo(PlanCreateParams.Status.ACTIVE) + assertThat(body.netTerms()).contains(0L) + assertThat(body.status()).contains(PlanCreateParams.Status.ACTIVE) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanExternalPlanIdUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanExternalPlanIdUpdateParamsTest.kt index 23b03df8..394ab6e7 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanExternalPlanIdUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanExternalPlanIdUpdateParamsTest.kt @@ -35,9 +35,9 @@ class PlanExternalPlanIdUpdateParamsTest { .build() val body = params.getBody() assertThat(body).isNotNull - assertThat(body.externalPlanId()).isEqualTo("external_plan_id") + assertThat(body.externalPlanId()).contains("external_plan_id") assertThat(body.metadata()) - .isEqualTo( + .contains( PlanExternalPlanIdUpdateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanUpdateParamsTest.kt index ac2ef30d..969dd3f8 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/PlanUpdateParamsTest.kt @@ -35,9 +35,9 @@ class PlanUpdateParamsTest { .build() val body = params.getBody() assertThat(body).isNotNull - assertThat(body.externalPlanId()).isEqualTo("external_plan_id") + assertThat(body.externalPlanId()).contains("external_plan_id") assertThat(body.metadata()) - .isEqualTo( + .contains( PlanUpdateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceEvaluateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceEvaluateParamsTest.kt index c15da8ef..d77b9b10 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceEvaluateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceEvaluateParamsTest.kt @@ -38,12 +38,12 @@ class PriceEvaluateParamsTest { assertThat(body.timeframeEnd()).isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) assertThat(body.timeframeStart()) .isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) - assertThat(body.customerId()).isEqualTo("customer_id") - assertThat(body.externalCustomerId()).isEqualTo("external_customer_id") + assertThat(body.customerId()).contains("customer_id") + assertThat(body.externalCustomerId()).contains("external_customer_id") assertThat(body.filter()) - .isEqualTo("my_numeric_property > 100 AND my_other_property = 'bar'") + .contains("my_numeric_property > 100 AND my_other_property = 'bar'") assertThat(body.groupingKeys()) - .isEqualTo(listOf("case when my_event_type = 'foo' then true else false end")) + .contains(listOf("case when my_event_type = 'foo' then true else false end")) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceExternalPriceIdUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceExternalPriceIdUpdateParamsTest.kt index 09d738bf..615c3e95 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceExternalPriceIdUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceExternalPriceIdUpdateParamsTest.kt @@ -34,7 +34,7 @@ class PriceExternalPriceIdUpdateParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.metadata()) - .isEqualTo( + .contains( PriceExternalPriceIdUpdateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceUpdateParamsTest.kt index fc4b58ba..751fd643 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/PriceUpdateParamsTest.kt @@ -34,7 +34,7 @@ class PriceUpdateParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.metadata()) - .isEqualTo( + .contains( PriceUpdateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionCancelParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionCancelParamsTest.kt index cef444ff..2ecafcf5 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionCancelParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionCancelParamsTest.kt @@ -30,7 +30,7 @@ class SubscriptionCancelParamsTest { assertThat(body.cancelOption()) .isEqualTo(SubscriptionCancelParams.CancelOption.END_OF_SUBSCRIPTION_TERM) assertThat(body.cancellationDate()) - .isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) + .contains(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionCreateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionCreateParamsTest.kt index 224edbe5..476aba1e 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionCreateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionCreateParamsTest.kt @@ -637,7 +637,7 @@ class SubscriptionCreateParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.addAdjustments()) - .isEqualTo( + .contains( listOf( SubscriptionCreateParams.AddAdjustment.builder() .adjustment( @@ -665,7 +665,7 @@ class SubscriptionCreateParamsTest { ) ) assertThat(body.addPrices()) - .isEqualTo( + .contains( listOf( SubscriptionCreateParams.AddPrice.builder() .discounts( @@ -766,44 +766,44 @@ class SubscriptionCreateParamsTest { .build() ) ) - assertThat(body.alignBillingWithSubscriptionStartDate()).isEqualTo(true) - assertThat(body.autoCollection()).isEqualTo(true) - assertThat(body.awsRegion()).isEqualTo("aws_region") + assertThat(body.alignBillingWithSubscriptionStartDate()).contains(true) + assertThat(body.autoCollection()).contains(true) + assertThat(body.awsRegion()).contains("aws_region") assertThat(body.billingCycleAnchorConfiguration()) - .isEqualTo( + .contains( SubscriptionCreateParams.BillingCycleAnchorConfiguration.builder() .day(1L) .month(1L) .year(0L) .build() ) - assertThat(body.couponRedemptionCode()).isEqualTo("coupon_redemption_code") - assertThat(body.creditsOverageRate()).isEqualTo(0.0) - assertThat(body.customerId()).isEqualTo("customer_id") - assertThat(body.defaultInvoiceMemo()).isEqualTo("default_invoice_memo") - assertThat(body.endDate()).isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) - assertThat(body.externalCustomerId()).isEqualTo("external_customer_id") + assertThat(body.couponRedemptionCode()).contains("coupon_redemption_code") + assertThat(body.creditsOverageRate()).contains(0.0) + assertThat(body.customerId()).contains("customer_id") + assertThat(body.defaultInvoiceMemo()).contains("default_invoice_memo") + assertThat(body.endDate()).contains(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) + assertThat(body.externalCustomerId()).contains("external_customer_id") assertThat(body.externalMarketplace()) - .isEqualTo(SubscriptionCreateParams.ExternalMarketplace.GOOGLE) + .contains(SubscriptionCreateParams.ExternalMarketplace.GOOGLE) assertThat(body.externalMarketplaceReportingId()) - .isEqualTo("external_marketplace_reporting_id") - assertThat(body.externalPlanId()).isEqualTo("ZMwNQefe7J3ecf7W") - assertThat(body.filter()).isEqualTo("my_property > 100 AND my_other_property = 'bar'") - assertThat(body.initialPhaseOrder()).isEqualTo(2L) - assertThat(body.invoicingThreshold()).isEqualTo("10.00") + .contains("external_marketplace_reporting_id") + assertThat(body.externalPlanId()).contains("ZMwNQefe7J3ecf7W") + assertThat(body.filter()).contains("my_property > 100 AND my_other_property = 'bar'") + assertThat(body.initialPhaseOrder()).contains(2L) + assertThat(body.invoicingThreshold()).contains("10.00") assertThat(body.metadata()) - .isEqualTo( + .contains( SubscriptionCreateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() ) - assertThat(body.netTerms()).isEqualTo(0L) - assertThat(body.perCreditOverageAmount()).isEqualTo(0.0) - assertThat(body.planId()).isEqualTo("ZMwNQefe7J3ecf7W") - assertThat(body.planVersionNumber()).isEqualTo(0L) - assertThat(body.priceOverrides()).isEqualTo(listOf(JsonValue.from(mapOf()))) + assertThat(body.netTerms()).contains(0L) + assertThat(body.perCreditOverageAmount()).contains(0.0) + assertThat(body.planId()).contains("ZMwNQefe7J3ecf7W") + assertThat(body.planVersionNumber()).contains(0L) + assertThat(body.priceOverrides()).contains(listOf(JsonValue.from(mapOf()))) assertThat(body.removeAdjustments()) - .isEqualTo( + .contains( listOf( SubscriptionCreateParams.RemoveAdjustment.builder() .adjustmentId("h74gfhdjvn7ujokd") @@ -811,7 +811,7 @@ class SubscriptionCreateParamsTest { ) ) assertThat(body.removePrices()) - .isEqualTo( + .contains( listOf( SubscriptionCreateParams.RemovePrice.builder() .externalPriceId("external_price_id") @@ -820,7 +820,7 @@ class SubscriptionCreateParamsTest { ) ) assertThat(body.replaceAdjustments()) - .isEqualTo( + .contains( listOf( SubscriptionCreateParams.ReplaceAdjustment.builder() .adjustment( @@ -846,7 +846,7 @@ class SubscriptionCreateParamsTest { ) ) assertThat(body.replacePrices()) - .isEqualTo( + .contains( listOf( SubscriptionCreateParams.ReplacePrice.builder() .replacesPriceId("replaces_price_id") @@ -946,8 +946,8 @@ class SubscriptionCreateParamsTest { .build() ) ) - assertThat(body.startDate()).isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) - assertThat(body.trialDurationDays()).isEqualTo(0L) + assertThat(body.startDate()).contains(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) + assertThat(body.trialDurationDays()).contains(0L) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsParamsTest.kt index ad2a1137..691f1174 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionPriceIntervalsParamsTest.kt @@ -453,7 +453,7 @@ class SubscriptionPriceIntervalsParamsTest { val body = params.getBody() assertThat(body).isNotNull assertThat(body.add()) - .isEqualTo( + .contains( listOf( SubscriptionPriceIntervalsParams.Add.builder() .startDate( @@ -586,7 +586,7 @@ class SubscriptionPriceIntervalsParamsTest { ) ) assertThat(body.addAdjustments()) - .isEqualTo( + .contains( listOf( SubscriptionPriceIntervalsParams.AddAdjustment.builder() .adjustment( @@ -622,7 +622,7 @@ class SubscriptionPriceIntervalsParamsTest { ) ) assertThat(body.edit()) - .isEqualTo( + .contains( listOf( SubscriptionPriceIntervalsParams.Edit.builder() .priceIntervalId("sdfs6wdjvn7ujokd") @@ -650,7 +650,7 @@ class SubscriptionPriceIntervalsParamsTest { ) ) assertThat(body.editAdjustments()) - .isEqualTo( + .contains( listOf( SubscriptionPriceIntervalsParams.EditAdjustment.builder() .adjustmentIntervalId("sdfs6wdjvn7ujokd") diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeParamsTest.kt index 81427835..bbccce06 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionSchedulePlanChangeParamsTest.kt @@ -671,7 +671,7 @@ class SubscriptionSchedulePlanChangeParamsTest { assertThat(body.changeOption()) .isEqualTo(SubscriptionSchedulePlanChangeParams.ChangeOption.REQUESTED_DATE) assertThat(body.addAdjustments()) - .isEqualTo( + .contains( listOf( SubscriptionSchedulePlanChangeParams.AddAdjustment.builder() .adjustment( @@ -700,7 +700,7 @@ class SubscriptionSchedulePlanChangeParamsTest { ) ) assertThat(body.addPrices()) - .isEqualTo( + .contains( listOf( SubscriptionSchedulePlanChangeParams.AddPrice.builder() .discounts( @@ -809,33 +809,33 @@ class SubscriptionSchedulePlanChangeParamsTest { .build() ) ) - assertThat(body.alignBillingWithPlanChangeDate()).isEqualTo(true) - assertThat(body.autoCollection()).isEqualTo(true) + assertThat(body.alignBillingWithPlanChangeDate()).contains(true) + assertThat(body.autoCollection()).contains(true) assertThat(body.billingCycleAlignment()) - .isEqualTo(SubscriptionSchedulePlanChangeParams.BillingCycleAlignment.UNCHANGED) + .contains(SubscriptionSchedulePlanChangeParams.BillingCycleAlignment.UNCHANGED) assertThat(body.billingCycleAnchorConfiguration()) - .isEqualTo( + .contains( SubscriptionSchedulePlanChangeParams.BillingCycleAnchorConfiguration.builder() .day(1L) .month(1L) .year(0L) .build() ) - assertThat(body.changeDate()).isEqualTo(OffsetDateTime.parse("2017-07-21T17:32:28Z")) - assertThat(body.couponRedemptionCode()).isEqualTo("coupon_redemption_code") - assertThat(body.creditsOverageRate()).isEqualTo(0.0) - assertThat(body.defaultInvoiceMemo()).isEqualTo("default_invoice_memo") - assertThat(body.externalPlanId()).isEqualTo("ZMwNQefe7J3ecf7W") - assertThat(body.filter()).isEqualTo("my_property > 100 AND my_other_property = 'bar'") - assertThat(body.initialPhaseOrder()).isEqualTo(2L) - assertThat(body.invoicingThreshold()).isEqualTo("10.00") - assertThat(body.netTerms()).isEqualTo(0L) - assertThat(body.perCreditOverageAmount()).isEqualTo(0.0) - assertThat(body.planId()).isEqualTo("ZMwNQefe7J3ecf7W") - assertThat(body.planVersionNumber()).isEqualTo(0L) - assertThat(body.priceOverrides()).isEqualTo(listOf(JsonValue.from(mapOf()))) + assertThat(body.changeDate()).contains(OffsetDateTime.parse("2017-07-21T17:32:28Z")) + assertThat(body.couponRedemptionCode()).contains("coupon_redemption_code") + assertThat(body.creditsOverageRate()).contains(0.0) + assertThat(body.defaultInvoiceMemo()).contains("default_invoice_memo") + assertThat(body.externalPlanId()).contains("ZMwNQefe7J3ecf7W") + assertThat(body.filter()).contains("my_property > 100 AND my_other_property = 'bar'") + assertThat(body.initialPhaseOrder()).contains(2L) + assertThat(body.invoicingThreshold()).contains("10.00") + assertThat(body.netTerms()).contains(0L) + assertThat(body.perCreditOverageAmount()).contains(0.0) + assertThat(body.planId()).contains("ZMwNQefe7J3ecf7W") + assertThat(body.planVersionNumber()).contains(0L) + assertThat(body.priceOverrides()).contains(listOf(JsonValue.from(mapOf()))) assertThat(body.removeAdjustments()) - .isEqualTo( + .contains( listOf( SubscriptionSchedulePlanChangeParams.RemoveAdjustment.builder() .adjustmentId("h74gfhdjvn7ujokd") @@ -843,7 +843,7 @@ class SubscriptionSchedulePlanChangeParamsTest { ) ) assertThat(body.removePrices()) - .isEqualTo( + .contains( listOf( SubscriptionSchedulePlanChangeParams.RemovePrice.builder() .externalPriceId("external_price_id") @@ -852,7 +852,7 @@ class SubscriptionSchedulePlanChangeParamsTest { ) ) assertThat(body.replaceAdjustments()) - .isEqualTo( + .contains( listOf( SubscriptionSchedulePlanChangeParams.ReplaceAdjustment.builder() .adjustment( @@ -880,7 +880,7 @@ class SubscriptionSchedulePlanChangeParamsTest { ) ) assertThat(body.replacePrices()) - .isEqualTo( + .contains( listOf( SubscriptionSchedulePlanChangeParams.ReplacePrice.builder() .replacesPriceId("replaces_price_id") @@ -990,7 +990,7 @@ class SubscriptionSchedulePlanChangeParamsTest { .build() ) ) - assertThat(body.trialDurationDays()).isEqualTo(0L) + assertThat(body.trialDurationDays()).contains(0L) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseParamsTest.kt index b04e9441..e2790edc 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionTriggerPhaseParamsTest.kt @@ -25,7 +25,7 @@ class SubscriptionTriggerPhaseParamsTest { .build() val body = params.getBody() assertThat(body).isNotNull - assertThat(body.effectiveDate()).isEqualTo(LocalDate.parse("2019-12-27")) + assertThat(body.effectiveDate()).contains(LocalDate.parse("2019-12-27")) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityParamsTest.kt index 6db31bff..fe1ceedc 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateFixedFeeQuantityParamsTest.kt @@ -34,8 +34,8 @@ class SubscriptionUpdateFixedFeeQuantityParamsTest { assertThat(body.priceId()).isEqualTo("price_id") assertThat(body.quantity()).isEqualTo(0.0) assertThat(body.changeOption()) - .isEqualTo(SubscriptionUpdateFixedFeeQuantityParams.ChangeOption.IMMEDIATE) - assertThat(body.effectiveDate()).isEqualTo(LocalDate.parse("2022-12-21")) + .contains(SubscriptionUpdateFixedFeeQuantityParams.ChangeOption.IMMEDIATE) + assertThat(body.effectiveDate()).contains(LocalDate.parse("2022-12-21")) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateParamsTest.kt index e4f3fe46..a0579a54 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateParamsTest.kt @@ -41,16 +41,16 @@ class SubscriptionUpdateParamsTest { .build() val body = params.getBody() assertThat(body).isNotNull - assertThat(body.autoCollection()).isEqualTo(true) - assertThat(body.defaultInvoiceMemo()).isEqualTo("default_invoice_memo") - assertThat(body.invoicingThreshold()).isEqualTo("10.00") + assertThat(body.autoCollection()).contains(true) + assertThat(body.defaultInvoiceMemo()).contains("default_invoice_memo") + assertThat(body.invoicingThreshold()).contains("10.00") assertThat(body.metadata()) - .isEqualTo( + .contains( SubscriptionUpdateParams.Metadata.builder() .putAdditionalProperty("foo", JsonValue.from("string")) .build() ) - assertThat(body.netTerms()).isEqualTo(0L) + assertThat(body.netTerms()).contains(0L) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateTrialParamsTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateTrialParamsTest.kt index 76ca4de0..ca950a8e 100644 --- a/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateTrialParamsTest.kt +++ b/orb-java-core/src/test/kotlin/com/withorb/api/models/SubscriptionUpdateTrialParamsTest.kt @@ -41,7 +41,7 @@ class SubscriptionUpdateTrialParamsTest { OffsetDateTime.parse("2017-07-21T17:32:28Z") ) ) - assertThat(body.shift()).isEqualTo(true) + assertThat(body.shift()).contains(true) } @Test diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/services/blocking/DimensionalPriceGroupServiceTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/services/blocking/DimensionalPriceGroupServiceTest.kt new file mode 100644 index 00000000..8a4f0324 --- /dev/null +++ b/orb-java-core/src/test/kotlin/com/withorb/api/services/blocking/DimensionalPriceGroupServiceTest.kt @@ -0,0 +1,74 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.services.blocking + +import com.withorb.api.TestServerExtension +import com.withorb.api.client.okhttp.OrbOkHttpClient +import com.withorb.api.core.JsonValue +import com.withorb.api.models.DimensionalPriceGroupCreateParams +import com.withorb.api.models.DimensionalPriceGroupListParams +import com.withorb.api.models.DimensionalPriceGroupRetrieveParams +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith + +@ExtendWith(TestServerExtension::class) +class DimensionalPriceGroupServiceTest { + + @Test + fun callCreate() { + val client = + OrbOkHttpClient.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val dimensionalPriceGroupService = client.dimensionalPriceGroups() + val dimensionalPriceGroup = + dimensionalPriceGroupService.create( + DimensionalPriceGroupCreateParams.builder() + .billableMetricId("billable_metric_id") + .dimensions(listOf("region", "instance_type")) + .name("name") + .externalDimensionalPriceGroupId("external_dimensional_price_group_id") + .metadata( + DimensionalPriceGroupCreateParams.Metadata.builder() + .putAdditionalProperty("foo", JsonValue.from("string")) + .build() + ) + .build() + ) + println(dimensionalPriceGroup) + dimensionalPriceGroup.validate() + } + + @Test + fun callRetrieve() { + val client = + OrbOkHttpClient.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val dimensionalPriceGroupService = client.dimensionalPriceGroups() + val dimensionalPriceGroup = + dimensionalPriceGroupService.retrieve( + DimensionalPriceGroupRetrieveParams.builder() + .dimensionalPriceGroupId("dimensional_price_group_id") + .build() + ) + println(dimensionalPriceGroup) + dimensionalPriceGroup.validate() + } + + @Test + fun callList() { + val client = + OrbOkHttpClient.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val dimensionalPriceGroupService = client.dimensionalPriceGroups() + val dimensionalPriceGroups = + dimensionalPriceGroupService.list(DimensionalPriceGroupListParams.builder().build()) + println(dimensionalPriceGroups) + dimensionalPriceGroups.data().forEach { it.validate() } + } +} diff --git a/orb-java-core/src/test/kotlin/com/withorb/api/services/blocking/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceTest.kt b/orb-java-core/src/test/kotlin/com/withorb/api/services/blocking/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceTest.kt new file mode 100644 index 00000000..98bc816c --- /dev/null +++ b/orb-java-core/src/test/kotlin/com/withorb/api/services/blocking/dimensionalPriceGroups/ExternalDimensionalPriceGroupIdServiceTest.kt @@ -0,0 +1,32 @@ +// File generated from our OpenAPI spec by Stainless. + +package com.withorb.api.services.blocking.dimensionalPriceGroups + +import com.withorb.api.TestServerExtension +import com.withorb.api.client.okhttp.OrbOkHttpClient +import com.withorb.api.models.DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.ExtendWith + +@ExtendWith(TestServerExtension::class) +class ExternalDimensionalPriceGroupIdServiceTest { + + @Test + fun callRetrieve() { + val client = + OrbOkHttpClient.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val externalDimensionalPriceGroupIdService = + client.dimensionalPriceGroups().externalDimensionalPriceGroupId() + val dimensionalPriceGroup = + externalDimensionalPriceGroupIdService.retrieve( + DimensionalPriceGroupExternalDimensionalPriceGroupIdRetrieveParams.builder() + .externalDimensionalPriceGroupId("external_dimensional_price_group_id") + .build() + ) + println(dimensionalPriceGroup) + dimensionalPriceGroup.validate() + } +} diff --git a/orb-java-example/build.gradle.kts b/orb-java-example/build.gradle.kts new file mode 100644 index 00000000..15dd1748 --- /dev/null +++ b/orb-java-example/build.gradle.kts @@ -0,0 +1,18 @@ +plugins { + id("orb.kotlin") + id("java") + application +} + +dependencies { + implementation(project(":orb-java")) +} + +tasks.withType().configureEach { + // Allow using more modern APIs, like `List.of` and `Map.of`, in examples. + options.release.set(9) +} + +application { + mainClass = "com.withorb.api.example.Main" +}