com.lithic.api.models.SettlementReport.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of lithic-kotlin-core Show documentation
Show all versions of lithic-kotlin-core Show documentation
The Lithic Developer API is designed to provide a predictable programmatic
interface for accessing your Lithic account through an API and transaction
webhooks. Note that your API key is a secret and should be treated as such.
Don't share it with anyone, including us. We will never ask you for it.
// File generated from our OpenAPI spec by Stainless.
package com.lithic.api.models
import com.fasterxml.jackson.annotation.JsonAnyGetter
import com.fasterxml.jackson.annotation.JsonAnySetter
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import com.lithic.api.core.ExcludeMissing
import com.lithic.api.core.JsonField
import com.lithic.api.core.JsonMissing
import com.lithic.api.core.JsonValue
import com.lithic.api.core.NoAutoDetect
import com.lithic.api.core.toUnmodifiable
import java.time.OffsetDateTime
import java.util.Objects
@JsonDeserialize(builder = SettlementReport.Builder::class)
@NoAutoDetect
class SettlementReport
private constructor(
private val created: JsonField,
private val currency: JsonField,
private val details: JsonField>,
private val disputesGrossAmount: JsonField,
private val interchangeGrossAmount: JsonField,
private val otherFeesGrossAmount: JsonField,
private val reportDate: JsonField,
private val settledNetAmount: JsonField,
private val transactionsGrossAmount: JsonField,
private val updated: JsonField,
private val additionalProperties: Map,
) {
private var validated: Boolean = false
private var hashCode: Int = 0
/** Date and time when the transaction first occurred. UTC time zone. */
fun created(): OffsetDateTime = created.getRequired("created")
/** Three-digit alphabetic ISO 4217 code. */
fun currency(): String = currency.getRequired("currency")
fun details(): List = details.getRequired("details")
/** The total gross amount of disputes settlements. */
fun disputesGrossAmount(): Long = disputesGrossAmount.getRequired("disputes_gross_amount")
/** The total amount of interchange. */
fun interchangeGrossAmount(): Long =
interchangeGrossAmount.getRequired("interchange_gross_amount")
/** Total amount of gross other fees outside of interchange. */
fun otherFeesGrossAmount(): Long = otherFeesGrossAmount.getRequired("other_fees_gross_amount")
/** Date of when the report was first generated. */
fun reportDate(): String = reportDate.getRequired("report_date")
/**
* The total net amount of cash moved. (net value of settled_gross_amount, interchange, fees).
*/
fun settledNetAmount(): Long = settledNetAmount.getRequired("settled_net_amount")
/**
* The total amount of settlement impacting transactions (excluding interchange, fees, and
* disputes).
*/
fun transactionsGrossAmount(): Long =
transactionsGrossAmount.getRequired("transactions_gross_amount")
/** Date and time when the transaction first occurred. UTC time zone. */
fun updated(): OffsetDateTime = updated.getRequired("updated")
/** Date and time when the transaction first occurred. UTC time zone. */
@JsonProperty("created") @ExcludeMissing fun _created() = created
/** Three-digit alphabetic ISO 4217 code. */
@JsonProperty("currency") @ExcludeMissing fun _currency() = currency
@JsonProperty("details") @ExcludeMissing fun _details() = details
/** The total gross amount of disputes settlements. */
@JsonProperty("disputes_gross_amount")
@ExcludeMissing
fun _disputesGrossAmount() = disputesGrossAmount
/** The total amount of interchange. */
@JsonProperty("interchange_gross_amount")
@ExcludeMissing
fun _interchangeGrossAmount() = interchangeGrossAmount
/** Total amount of gross other fees outside of interchange. */
@JsonProperty("other_fees_gross_amount")
@ExcludeMissing
fun _otherFeesGrossAmount() = otherFeesGrossAmount
/** Date of when the report was first generated. */
@JsonProperty("report_date") @ExcludeMissing fun _reportDate() = reportDate
/**
* The total net amount of cash moved. (net value of settled_gross_amount, interchange, fees).
*/
@JsonProperty("settled_net_amount") @ExcludeMissing fun _settledNetAmount() = settledNetAmount
/**
* The total amount of settlement impacting transactions (excluding interchange, fees, and
* disputes).
*/
@JsonProperty("transactions_gross_amount")
@ExcludeMissing
fun _transactionsGrossAmount() = transactionsGrossAmount
/** Date and time when the transaction first occurred. UTC time zone. */
@JsonProperty("updated") @ExcludeMissing fun _updated() = updated
@JsonAnyGetter
@ExcludeMissing
fun _additionalProperties(): Map = additionalProperties
fun validate(): SettlementReport = apply {
if (!validated) {
created()
currency()
details().forEach { it.validate() }
disputesGrossAmount()
interchangeGrossAmount()
otherFeesGrossAmount()
reportDate()
settledNetAmount()
transactionsGrossAmount()
updated()
validated = true
}
}
fun toBuilder() = Builder().from(this)
override fun equals(other: Any?): Boolean {
if (this === other) {
return true
}
return other is SettlementReport &&
this.created == other.created &&
this.currency == other.currency &&
this.details == other.details &&
this.disputesGrossAmount == other.disputesGrossAmount &&
this.interchangeGrossAmount == other.interchangeGrossAmount &&
this.otherFeesGrossAmount == other.otherFeesGrossAmount &&
this.reportDate == other.reportDate &&
this.settledNetAmount == other.settledNetAmount &&
this.transactionsGrossAmount == other.transactionsGrossAmount &&
this.updated == other.updated &&
this.additionalProperties == other.additionalProperties
}
override fun hashCode(): Int {
if (hashCode == 0) {
hashCode =
Objects.hash(
created,
currency,
details,
disputesGrossAmount,
interchangeGrossAmount,
otherFeesGrossAmount,
reportDate,
settledNetAmount,
transactionsGrossAmount,
updated,
additionalProperties,
)
}
return hashCode
}
override fun toString() =
"SettlementReport{created=$created, currency=$currency, details=$details, disputesGrossAmount=$disputesGrossAmount, interchangeGrossAmount=$interchangeGrossAmount, otherFeesGrossAmount=$otherFeesGrossAmount, reportDate=$reportDate, settledNetAmount=$settledNetAmount, transactionsGrossAmount=$transactionsGrossAmount, updated=$updated, additionalProperties=$additionalProperties}"
companion object {
fun builder() = Builder()
}
class Builder {
private var created: JsonField = JsonMissing.of()
private var currency: JsonField = JsonMissing.of()
private var details: JsonField> = JsonMissing.of()
private var disputesGrossAmount: JsonField = JsonMissing.of()
private var interchangeGrossAmount: JsonField = JsonMissing.of()
private var otherFeesGrossAmount: JsonField = JsonMissing.of()
private var reportDate: JsonField = JsonMissing.of()
private var settledNetAmount: JsonField = JsonMissing.of()
private var transactionsGrossAmount: JsonField = JsonMissing.of()
private var updated: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
internal fun from(settlementReport: SettlementReport) = apply {
this.created = settlementReport.created
this.currency = settlementReport.currency
this.details = settlementReport.details
this.disputesGrossAmount = settlementReport.disputesGrossAmount
this.interchangeGrossAmount = settlementReport.interchangeGrossAmount
this.otherFeesGrossAmount = settlementReport.otherFeesGrossAmount
this.reportDate = settlementReport.reportDate
this.settledNetAmount = settlementReport.settledNetAmount
this.transactionsGrossAmount = settlementReport.transactionsGrossAmount
this.updated = settlementReport.updated
additionalProperties(settlementReport.additionalProperties)
}
/** Date and time when the transaction first occurred. UTC time zone. */
fun created(created: OffsetDateTime) = created(JsonField.of(created))
/** Date and time when the transaction first occurred. UTC time zone. */
@JsonProperty("created")
@ExcludeMissing
fun created(created: JsonField) = apply { this.created = created }
/** Three-digit alphabetic ISO 4217 code. */
fun currency(currency: String) = currency(JsonField.of(currency))
/** Three-digit alphabetic ISO 4217 code. */
@JsonProperty("currency")
@ExcludeMissing
fun currency(currency: JsonField) = apply { this.currency = currency }
fun details(details: List) = details(JsonField.of(details))
@JsonProperty("details")
@ExcludeMissing
fun details(details: JsonField>) = apply {
this.details = details
}
/** The total gross amount of disputes settlements. */
fun disputesGrossAmount(disputesGrossAmount: Long) =
disputesGrossAmount(JsonField.of(disputesGrossAmount))
/** The total gross amount of disputes settlements. */
@JsonProperty("disputes_gross_amount")
@ExcludeMissing
fun disputesGrossAmount(disputesGrossAmount: JsonField) = apply {
this.disputesGrossAmount = disputesGrossAmount
}
/** The total amount of interchange. */
fun interchangeGrossAmount(interchangeGrossAmount: Long) =
interchangeGrossAmount(JsonField.of(interchangeGrossAmount))
/** The total amount of interchange. */
@JsonProperty("interchange_gross_amount")
@ExcludeMissing
fun interchangeGrossAmount(interchangeGrossAmount: JsonField) = apply {
this.interchangeGrossAmount = interchangeGrossAmount
}
/** Total amount of gross other fees outside of interchange. */
fun otherFeesGrossAmount(otherFeesGrossAmount: Long) =
otherFeesGrossAmount(JsonField.of(otherFeesGrossAmount))
/** Total amount of gross other fees outside of interchange. */
@JsonProperty("other_fees_gross_amount")
@ExcludeMissing
fun otherFeesGrossAmount(otherFeesGrossAmount: JsonField) = apply {
this.otherFeesGrossAmount = otherFeesGrossAmount
}
/** Date of when the report was first generated. */
fun reportDate(reportDate: String) = reportDate(JsonField.of(reportDate))
/** Date of when the report was first generated. */
@JsonProperty("report_date")
@ExcludeMissing
fun reportDate(reportDate: JsonField) = apply { this.reportDate = reportDate }
/**
* The total net amount of cash moved. (net value of settled_gross_amount, interchange,
* fees).
*/
fun settledNetAmount(settledNetAmount: Long) =
settledNetAmount(JsonField.of(settledNetAmount))
/**
* The total net amount of cash moved. (net value of settled_gross_amount, interchange,
* fees).
*/
@JsonProperty("settled_net_amount")
@ExcludeMissing
fun settledNetAmount(settledNetAmount: JsonField) = apply {
this.settledNetAmount = settledNetAmount
}
/**
* The total amount of settlement impacting transactions (excluding interchange, fees, and
* disputes).
*/
fun transactionsGrossAmount(transactionsGrossAmount: Long) =
transactionsGrossAmount(JsonField.of(transactionsGrossAmount))
/**
* The total amount of settlement impacting transactions (excluding interchange, fees, and
* disputes).
*/
@JsonProperty("transactions_gross_amount")
@ExcludeMissing
fun transactionsGrossAmount(transactionsGrossAmount: JsonField) = apply {
this.transactionsGrossAmount = transactionsGrossAmount
}
/** Date and time when the transaction first occurred. UTC time zone. */
fun updated(updated: OffsetDateTime) = updated(JsonField.of(updated))
/** Date and time when the transaction first occurred. UTC time zone. */
@JsonProperty("updated")
@ExcludeMissing
fun updated(updated: JsonField) = apply { this.updated = updated }
fun additionalProperties(additionalProperties: Map) = apply {
this.additionalProperties.clear()
this.additionalProperties.putAll(additionalProperties)
}
@JsonAnySetter
fun putAdditionalProperty(key: String, value: JsonValue) = apply {
this.additionalProperties.put(key, value)
}
fun putAllAdditionalProperties(additionalProperties: Map) = apply {
this.additionalProperties.putAll(additionalProperties)
}
fun build(): SettlementReport =
SettlementReport(
created,
currency,
details.map { it.toUnmodifiable() },
disputesGrossAmount,
interchangeGrossAmount,
otherFeesGrossAmount,
reportDate,
settledNetAmount,
transactionsGrossAmount,
updated,
additionalProperties.toUnmodifiable(),
)
}
}