
com.moderntreasury.api.models.Document.kt Maven / Gradle / Ivy
// File generated from our OpenAPI spec by Stainless.
package com.moderntreasury.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.moderntreasury.api.core.Enum
import com.moderntreasury.api.core.ExcludeMissing
import com.moderntreasury.api.core.JsonField
import com.moderntreasury.api.core.JsonMissing
import com.moderntreasury.api.core.JsonValue
import com.moderntreasury.api.core.NoAutoDetect
import com.moderntreasury.api.core.toImmutable
import com.moderntreasury.api.errors.ModernTreasuryInvalidDataException
import java.time.OffsetDateTime
import java.util.Objects
@JsonDeserialize(builder = Document.Builder::class)
@NoAutoDetect
class Document
private constructor(
private val id: JsonField,
private val object_: JsonField,
private val liveMode: JsonField,
private val createdAt: JsonField,
private val updatedAt: JsonField,
private val discardedAt: JsonField,
private val documentType: JsonField,
private val source: JsonField,
private val documentableId: JsonField,
private val documentableType: JsonField,
private val documentDetails: JsonField>,
private val file: JsonField,
private val additionalProperties: Map,
) {
private var validated: Boolean = false
fun id(): String = id.getRequired("id")
fun object_(): String = object_.getRequired("object")
/**
* This field will be true if this object exists in the live environment or false if it exists
* in the test environment.
*/
fun liveMode(): Boolean = liveMode.getRequired("live_mode")
fun createdAt(): OffsetDateTime = createdAt.getRequired("created_at")
fun updatedAt(): OffsetDateTime = updatedAt.getRequired("updated_at")
fun discardedAt(): OffsetDateTime? = discardedAt.getNullable("discarded_at")
/** A category given to the document, can be `null`. */
fun documentType(): String? = documentType.getNullable("document_type")
/** The source of the document. Can be `vendor`, `customer`, or `modern_treasury`. */
fun source(): String = source.getRequired("source")
/** The unique identifier for the associated object. */
fun documentableId(): String = documentableId.getRequired("documentable_id")
/**
* The type of the associated object. Currently can be one of `payment_order`, `transaction`,
* `paper_item`, `expected_payment`, `counterparty`, `organization`, `case`, `internal_account`,
* `decision`, or `external_account`.
*/
fun documentableType(): DocumentableType = documentableType.getRequired("documentable_type")
fun documentDetails(): List = documentDetails.getRequired("document_details")
fun file(): File = file.getRequired("file")
@JsonProperty("id") @ExcludeMissing fun _id() = id
@JsonProperty("object") @ExcludeMissing fun _object_() = object_
/**
* This field will be true if this object exists in the live environment or false if it exists
* in the test environment.
*/
@JsonProperty("live_mode") @ExcludeMissing fun _liveMode() = liveMode
@JsonProperty("created_at") @ExcludeMissing fun _createdAt() = createdAt
@JsonProperty("updated_at") @ExcludeMissing fun _updatedAt() = updatedAt
@JsonProperty("discarded_at") @ExcludeMissing fun _discardedAt() = discardedAt
/** A category given to the document, can be `null`. */
@JsonProperty("document_type") @ExcludeMissing fun _documentType() = documentType
/** The source of the document. Can be `vendor`, `customer`, or `modern_treasury`. */
@JsonProperty("source") @ExcludeMissing fun _source() = source
/** The unique identifier for the associated object. */
@JsonProperty("documentable_id") @ExcludeMissing fun _documentableId() = documentableId
/**
* The type of the associated object. Currently can be one of `payment_order`, `transaction`,
* `paper_item`, `expected_payment`, `counterparty`, `organization`, `case`, `internal_account`,
* `decision`, or `external_account`.
*/
@JsonProperty("documentable_type") @ExcludeMissing fun _documentableType() = documentableType
@JsonProperty("document_details") @ExcludeMissing fun _documentDetails() = documentDetails
@JsonProperty("file") @ExcludeMissing fun _file() = file
@JsonAnyGetter
@ExcludeMissing
fun _additionalProperties(): Map = additionalProperties
fun validate(): Document = apply {
if (!validated) {
id()
object_()
liveMode()
createdAt()
updatedAt()
discardedAt()
documentType()
source()
documentableId()
documentableType()
documentDetails().forEach { it.validate() }
file().validate()
validated = true
}
}
fun toBuilder() = Builder().from(this)
companion object {
fun builder() = Builder()
}
class Builder {
private var id: JsonField = JsonMissing.of()
private var object_: JsonField = JsonMissing.of()
private var liveMode: JsonField = JsonMissing.of()
private var createdAt: JsonField = JsonMissing.of()
private var updatedAt: JsonField = JsonMissing.of()
private var discardedAt: JsonField = JsonMissing.of()
private var documentType: JsonField = JsonMissing.of()
private var source: JsonField = JsonMissing.of()
private var documentableId: JsonField = JsonMissing.of()
private var documentableType: JsonField = JsonMissing.of()
private var documentDetails: JsonField> = JsonMissing.of()
private var file: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
internal fun from(document: Document) = apply {
this.id = document.id
this.object_ = document.object_
this.liveMode = document.liveMode
this.createdAt = document.createdAt
this.updatedAt = document.updatedAt
this.discardedAt = document.discardedAt
this.documentType = document.documentType
this.source = document.source
this.documentableId = document.documentableId
this.documentableType = document.documentableType
this.documentDetails = document.documentDetails
this.file = document.file
additionalProperties(document.additionalProperties)
}
fun id(id: String) = id(JsonField.of(id))
@JsonProperty("id") @ExcludeMissing fun id(id: JsonField) = apply { this.id = id }
fun object_(object_: String) = object_(JsonField.of(object_))
@JsonProperty("object")
@ExcludeMissing
fun object_(object_: JsonField) = apply { this.object_ = object_ }
/**
* This field will be true if this object exists in the live environment or false if it
* exists in the test environment.
*/
fun liveMode(liveMode: Boolean) = liveMode(JsonField.of(liveMode))
/**
* This field will be true if this object exists in the live environment or false if it
* exists in the test environment.
*/
@JsonProperty("live_mode")
@ExcludeMissing
fun liveMode(liveMode: JsonField) = apply { this.liveMode = liveMode }
fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt))
@JsonProperty("created_at")
@ExcludeMissing
fun createdAt(createdAt: JsonField) = apply { this.createdAt = createdAt }
fun updatedAt(updatedAt: OffsetDateTime) = updatedAt(JsonField.of(updatedAt))
@JsonProperty("updated_at")
@ExcludeMissing
fun updatedAt(updatedAt: JsonField) = apply { this.updatedAt = updatedAt }
fun discardedAt(discardedAt: OffsetDateTime) = discardedAt(JsonField.of(discardedAt))
@JsonProperty("discarded_at")
@ExcludeMissing
fun discardedAt(discardedAt: JsonField) = apply {
this.discardedAt = discardedAt
}
/** A category given to the document, can be `null`. */
fun documentType(documentType: String) = documentType(JsonField.of(documentType))
/** A category given to the document, can be `null`. */
@JsonProperty("document_type")
@ExcludeMissing
fun documentType(documentType: JsonField) = apply {
this.documentType = documentType
}
/** The source of the document. Can be `vendor`, `customer`, or `modern_treasury`. */
fun source(source: String) = source(JsonField.of(source))
/** The source of the document. Can be `vendor`, `customer`, or `modern_treasury`. */
@JsonProperty("source")
@ExcludeMissing
fun source(source: JsonField) = apply { this.source = source }
/** The unique identifier for the associated object. */
fun documentableId(documentableId: String) = documentableId(JsonField.of(documentableId))
/** The unique identifier for the associated object. */
@JsonProperty("documentable_id")
@ExcludeMissing
fun documentableId(documentableId: JsonField) = apply {
this.documentableId = documentableId
}
/**
* The type of the associated object. Currently can be one of `payment_order`,
* `transaction`, `paper_item`, `expected_payment`, `counterparty`, `organization`, `case`,
* `internal_account`, `decision`, or `external_account`.
*/
fun documentableType(documentableType: DocumentableType) =
documentableType(JsonField.of(documentableType))
/**
* The type of the associated object. Currently can be one of `payment_order`,
* `transaction`, `paper_item`, `expected_payment`, `counterparty`, `organization`, `case`,
* `internal_account`, `decision`, or `external_account`.
*/
@JsonProperty("documentable_type")
@ExcludeMissing
fun documentableType(documentableType: JsonField) = apply {
this.documentableType = documentableType
}
fun documentDetails(documentDetails: List) =
documentDetails(JsonField.of(documentDetails))
@JsonProperty("document_details")
@ExcludeMissing
fun documentDetails(documentDetails: JsonField>) = apply {
this.documentDetails = documentDetails
}
fun file(file: File) = file(JsonField.of(file))
@JsonProperty("file")
@ExcludeMissing
fun file(file: JsonField) = apply { this.file = file }
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(): Document =
Document(
id,
object_,
liveMode,
createdAt,
updatedAt,
discardedAt,
documentType,
source,
documentableId,
documentableType,
documentDetails.map { it.toImmutable() },
file,
additionalProperties.toImmutable(),
)
}
@JsonDeserialize(builder = DocumentDetail.Builder::class)
@NoAutoDetect
class DocumentDetail
private constructor(
private val id: JsonField,
private val object_: JsonField,
private val liveMode: JsonField,
private val createdAt: JsonField,
private val updatedAt: JsonField,
private val discardedAt: JsonField,
private val documentIdentifierType: JsonField,
private val documentIdentifier: JsonField,
private val additionalProperties: Map,
) {
private var validated: Boolean = false
fun id(): String = id.getRequired("id")
fun object_(): String = object_.getRequired("object")
/**
* This field will be true if this object exists in the live environment or false if it
* exists in the test environment.
*/
fun liveMode(): Boolean = liveMode.getRequired("live_mode")
fun createdAt(): OffsetDateTime = createdAt.getRequired("created_at")
fun updatedAt(): OffsetDateTime = updatedAt.getRequired("updated_at")
fun discardedAt(): OffsetDateTime? = discardedAt.getNullable("discarded_at")
fun documentIdentifierType(): String =
documentIdentifierType.getRequired("document_identifier_type")
fun documentIdentifier(): String = documentIdentifier.getRequired("document_identifier")
@JsonProperty("id") @ExcludeMissing fun _id() = id
@JsonProperty("object") @ExcludeMissing fun _object_() = object_
/**
* This field will be true if this object exists in the live environment or false if it
* exists in the test environment.
*/
@JsonProperty("live_mode") @ExcludeMissing fun _liveMode() = liveMode
@JsonProperty("created_at") @ExcludeMissing fun _createdAt() = createdAt
@JsonProperty("updated_at") @ExcludeMissing fun _updatedAt() = updatedAt
@JsonProperty("discarded_at") @ExcludeMissing fun _discardedAt() = discardedAt
@JsonProperty("document_identifier_type")
@ExcludeMissing
fun _documentIdentifierType() = documentIdentifierType
@JsonProperty("document_identifier")
@ExcludeMissing
fun _documentIdentifier() = documentIdentifier
@JsonAnyGetter
@ExcludeMissing
fun _additionalProperties(): Map = additionalProperties
fun validate(): DocumentDetail = apply {
if (!validated) {
id()
object_()
liveMode()
createdAt()
updatedAt()
discardedAt()
documentIdentifierType()
documentIdentifier()
validated = true
}
}
fun toBuilder() = Builder().from(this)
companion object {
fun builder() = Builder()
}
class Builder {
private var id: JsonField = JsonMissing.of()
private var object_: JsonField = JsonMissing.of()
private var liveMode: JsonField = JsonMissing.of()
private var createdAt: JsonField = JsonMissing.of()
private var updatedAt: JsonField = JsonMissing.of()
private var discardedAt: JsonField = JsonMissing.of()
private var documentIdentifierType: JsonField = JsonMissing.of()
private var documentIdentifier: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
internal fun from(documentDetail: DocumentDetail) = apply {
this.id = documentDetail.id
this.object_ = documentDetail.object_
this.liveMode = documentDetail.liveMode
this.createdAt = documentDetail.createdAt
this.updatedAt = documentDetail.updatedAt
this.discardedAt = documentDetail.discardedAt
this.documentIdentifierType = documentDetail.documentIdentifierType
this.documentIdentifier = documentDetail.documentIdentifier
additionalProperties(documentDetail.additionalProperties)
}
fun id(id: String) = id(JsonField.of(id))
@JsonProperty("id")
@ExcludeMissing
fun id(id: JsonField) = apply { this.id = id }
fun object_(object_: String) = object_(JsonField.of(object_))
@JsonProperty("object")
@ExcludeMissing
fun object_(object_: JsonField) = apply { this.object_ = object_ }
/**
* This field will be true if this object exists in the live environment or false if it
* exists in the test environment.
*/
fun liveMode(liveMode: Boolean) = liveMode(JsonField.of(liveMode))
/**
* This field will be true if this object exists in the live environment or false if it
* exists in the test environment.
*/
@JsonProperty("live_mode")
@ExcludeMissing
fun liveMode(liveMode: JsonField) = apply { this.liveMode = liveMode }
fun createdAt(createdAt: OffsetDateTime) = createdAt(JsonField.of(createdAt))
@JsonProperty("created_at")
@ExcludeMissing
fun createdAt(createdAt: JsonField) = apply {
this.createdAt = createdAt
}
fun updatedAt(updatedAt: OffsetDateTime) = updatedAt(JsonField.of(updatedAt))
@JsonProperty("updated_at")
@ExcludeMissing
fun updatedAt(updatedAt: JsonField) = apply {
this.updatedAt = updatedAt
}
fun discardedAt(discardedAt: OffsetDateTime) = discardedAt(JsonField.of(discardedAt))
@JsonProperty("discarded_at")
@ExcludeMissing
fun discardedAt(discardedAt: JsonField) = apply {
this.discardedAt = discardedAt
}
fun documentIdentifierType(documentIdentifierType: String) =
documentIdentifierType(JsonField.of(documentIdentifierType))
@JsonProperty("document_identifier_type")
@ExcludeMissing
fun documentIdentifierType(documentIdentifierType: JsonField) = apply {
this.documentIdentifierType = documentIdentifierType
}
fun documentIdentifier(documentIdentifier: String) =
documentIdentifier(JsonField.of(documentIdentifier))
@JsonProperty("document_identifier")
@ExcludeMissing
fun documentIdentifier(documentIdentifier: JsonField) = apply {
this.documentIdentifier = documentIdentifier
}
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(): DocumentDetail =
DocumentDetail(
id,
object_,
liveMode,
createdAt,
updatedAt,
discardedAt,
documentIdentifierType,
documentIdentifier,
additionalProperties.toImmutable(),
)
}
override fun equals(other: Any?): Boolean {
if (this === other) {
return true
}
return /* spotless:off */ other is DocumentDetail && id == other.id && object_ == other.object_ && liveMode == other.liveMode && createdAt == other.createdAt && updatedAt == other.updatedAt && discardedAt == other.discardedAt && documentIdentifierType == other.documentIdentifierType && documentIdentifier == other.documentIdentifier && additionalProperties == other.additionalProperties /* spotless:on */
}
/* spotless:off */
private val hashCode: Int by lazy { Objects.hash(id, object_, liveMode, createdAt, updatedAt, discardedAt, documentIdentifierType, documentIdentifier, additionalProperties) }
/* spotless:on */
override fun hashCode(): Int = hashCode
override fun toString() =
"DocumentDetail{id=$id, object_=$object_, liveMode=$liveMode, createdAt=$createdAt, updatedAt=$updatedAt, discardedAt=$discardedAt, documentIdentifierType=$documentIdentifierType, documentIdentifier=$documentIdentifier, additionalProperties=$additionalProperties}"
}
class DocumentableType
@JsonCreator
private constructor(
private val value: JsonField,
) : Enum {
@com.fasterxml.jackson.annotation.JsonValue fun _value(): JsonField = value
companion object {
val CASE = of("case")
val COUNTERPARTY = of("counterparty")
val EXPECTED_PAYMENT = of("expected_payment")
val EXTERNAL_ACCOUNT = of("external_account")
val INCOMING_PAYMENT_DETAIL = of("incoming_payment_detail")
val INTERNAL_ACCOUNT = of("internal_account")
val ORGANIZATION = of("organization")
val PAPER_ITEM = of("paper_item")
val PAYMENT_ORDER = of("payment_order")
val TRANSACTION = of("transaction")
val DECISION = of("decision")
val CONNECTION = of("connection")
fun of(value: String) = DocumentableType(JsonField.of(value))
}
enum class Known {
CASE,
COUNTERPARTY,
EXPECTED_PAYMENT,
EXTERNAL_ACCOUNT,
INCOMING_PAYMENT_DETAIL,
INTERNAL_ACCOUNT,
ORGANIZATION,
PAPER_ITEM,
PAYMENT_ORDER,
TRANSACTION,
DECISION,
CONNECTION,
}
enum class Value {
CASE,
COUNTERPARTY,
EXPECTED_PAYMENT,
EXTERNAL_ACCOUNT,
INCOMING_PAYMENT_DETAIL,
INTERNAL_ACCOUNT,
ORGANIZATION,
PAPER_ITEM,
PAYMENT_ORDER,
TRANSACTION,
DECISION,
CONNECTION,
_UNKNOWN,
}
fun value(): Value =
when (this) {
CASE -> Value.CASE
COUNTERPARTY -> Value.COUNTERPARTY
EXPECTED_PAYMENT -> Value.EXPECTED_PAYMENT
EXTERNAL_ACCOUNT -> Value.EXTERNAL_ACCOUNT
INCOMING_PAYMENT_DETAIL -> Value.INCOMING_PAYMENT_DETAIL
INTERNAL_ACCOUNT -> Value.INTERNAL_ACCOUNT
ORGANIZATION -> Value.ORGANIZATION
PAPER_ITEM -> Value.PAPER_ITEM
PAYMENT_ORDER -> Value.PAYMENT_ORDER
TRANSACTION -> Value.TRANSACTION
DECISION -> Value.DECISION
CONNECTION -> Value.CONNECTION
else -> Value._UNKNOWN
}
fun known(): Known =
when (this) {
CASE -> Known.CASE
COUNTERPARTY -> Known.COUNTERPARTY
EXPECTED_PAYMENT -> Known.EXPECTED_PAYMENT
EXTERNAL_ACCOUNT -> Known.EXTERNAL_ACCOUNT
INCOMING_PAYMENT_DETAIL -> Known.INCOMING_PAYMENT_DETAIL
INTERNAL_ACCOUNT -> Known.INTERNAL_ACCOUNT
ORGANIZATION -> Known.ORGANIZATION
PAPER_ITEM -> Known.PAPER_ITEM
PAYMENT_ORDER -> Known.PAYMENT_ORDER
TRANSACTION -> Known.TRANSACTION
DECISION -> Known.DECISION
CONNECTION -> Known.CONNECTION
else -> throw ModernTreasuryInvalidDataException("Unknown DocumentableType: $value")
}
fun asString(): String = _value().asStringOrThrow()
override fun equals(other: Any?): Boolean {
if (this === other) {
return true
}
return /* spotless:off */ other is DocumentableType && value == other.value /* spotless:on */
}
override fun hashCode() = value.hashCode()
override fun toString() = value.toString()
}
@JsonDeserialize(builder = File.Builder::class)
@NoAutoDetect
class File
private constructor(
private val size: JsonField,
private val filename: JsonField,
private val contentType: JsonField,
private val additionalProperties: Map,
) {
private var validated: Boolean = false
/** The size of the document in bytes. */
fun size(): Long? = size.getNullable("size")
/** The original filename of the document. */
fun filename(): String? = filename.getNullable("filename")
/** The MIME content type of the document. */
fun contentType(): String? = contentType.getNullable("content_type")
/** The size of the document in bytes. */
@JsonProperty("size") @ExcludeMissing fun _size() = size
/** The original filename of the document. */
@JsonProperty("filename") @ExcludeMissing fun _filename() = filename
/** The MIME content type of the document. */
@JsonProperty("content_type") @ExcludeMissing fun _contentType() = contentType
@JsonAnyGetter
@ExcludeMissing
fun _additionalProperties(): Map = additionalProperties
fun validate(): File = apply {
if (!validated) {
size()
filename()
contentType()
validated = true
}
}
fun toBuilder() = Builder().from(this)
companion object {
fun builder() = Builder()
}
class Builder {
private var size: JsonField = JsonMissing.of()
private var filename: JsonField = JsonMissing.of()
private var contentType: JsonField = JsonMissing.of()
private var additionalProperties: MutableMap = mutableMapOf()
internal fun from(file: File) = apply {
this.size = file.size
this.filename = file.filename
this.contentType = file.contentType
additionalProperties(file.additionalProperties)
}
/** The size of the document in bytes. */
fun size(size: Long) = size(JsonField.of(size))
/** The size of the document in bytes. */
@JsonProperty("size")
@ExcludeMissing
fun size(size: JsonField) = apply { this.size = size }
/** The original filename of the document. */
fun filename(filename: String) = filename(JsonField.of(filename))
/** The original filename of the document. */
@JsonProperty("filename")
@ExcludeMissing
fun filename(filename: JsonField) = apply { this.filename = filename }
/** The MIME content type of the document. */
fun contentType(contentType: String) = contentType(JsonField.of(contentType))
/** The MIME content type of the document. */
@JsonProperty("content_type")
@ExcludeMissing
fun contentType(contentType: JsonField) = apply {
this.contentType = contentType
}
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(): File =
File(
size,
filename,
contentType,
additionalProperties.toImmutable(),
)
}
override fun equals(other: Any?): Boolean {
if (this === other) {
return true
}
return /* spotless:off */ other is File && size == other.size && filename == other.filename && contentType == other.contentType && additionalProperties == other.additionalProperties /* spotless:on */
}
/* spotless:off */
private val hashCode: Int by lazy { Objects.hash(size, filename, contentType, additionalProperties) }
/* spotless:on */
override fun hashCode(): Int = hashCode
override fun toString() =
"File{size=$size, filename=$filename, contentType=$contentType, additionalProperties=$additionalProperties}"
}
override fun equals(other: Any?): Boolean {
if (this === other) {
return true
}
return /* spotless:off */ other is Document && id == other.id && object_ == other.object_ && liveMode == other.liveMode && createdAt == other.createdAt && updatedAt == other.updatedAt && discardedAt == other.discardedAt && documentType == other.documentType && source == other.source && documentableId == other.documentableId && documentableType == other.documentableType && documentDetails == other.documentDetails && file == other.file && additionalProperties == other.additionalProperties /* spotless:on */
}
/* spotless:off */
private val hashCode: Int by lazy { Objects.hash(id, object_, liveMode, createdAt, updatedAt, discardedAt, documentType, source, documentableId, documentableType, documentDetails, file, additionalProperties) }
/* spotless:on */
override fun hashCode(): Int = hashCode
override fun toString() =
"Document{id=$id, object_=$object_, liveMode=$liveMode, createdAt=$createdAt, updatedAt=$updatedAt, discardedAt=$discardedAt, documentType=$documentType, source=$source, documentableId=$documentableId, documentableType=$documentableType, documentDetails=$documentDetails, file=$file, additionalProperties=$additionalProperties}"
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy