Skip to content

Commit d765701

Browse files
feat(api): small updates to Documents, AccountHolders and LoanTapes (#327)
- adds additional options to Documents and AccountHolder verification simulations - adds `starting_balance` to LoanTape
1 parent 710e1ff commit d765701

14 files changed

Lines changed: 938 additions & 144 deletions

lithic-java-core/src/main/kotlin/com/lithic/api/models/AccountHolderCreateResponse.kt

Lines changed: 148 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ private constructor(
2727
private val created: JsonField<OffsetDateTime>,
2828
private val externalId: JsonField<String>,
2929
private val status: JsonField<Status>,
30-
private val statusReasons: JsonField<List<StatusReason>>,
30+
private val statusReasons: JsonField<List<StatusReasons>>,
3131
private val requiredDocuments: JsonField<List<RequiredDocument>>,
3232
private val token: JsonField<String>,
3333
private val additionalProperties: Map<String, JsonValue>,
@@ -58,7 +58,7 @@ private constructor(
5858
fun status(): Status = status.getRequired("status")
5959

6060
/** Reason for the evaluation status. */
61-
fun statusReasons(): List<StatusReason> = statusReasons.getRequired("status_reasons")
61+
fun statusReasons(): List<StatusReasons> = statusReasons.getRequired("status_reasons")
6262

6363
/**
6464
* Only present for "KYB_BASIC" and "KYC_ADVANCED" workflows. A list of documents required for
@@ -134,7 +134,7 @@ private constructor(
134134
private var created: JsonField<OffsetDateTime> = JsonMissing.of()
135135
private var externalId: JsonField<String> = JsonMissing.of()
136136
private var status: JsonField<Status> = JsonMissing.of()
137-
private var statusReasons: JsonField<List<StatusReason>> = JsonMissing.of()
137+
private var statusReasons: JsonField<List<StatusReasons>> = JsonMissing.of()
138138
private var requiredDocuments: JsonField<List<RequiredDocument>> = JsonMissing.of()
139139
private var token: JsonField<String> = JsonMissing.of()
140140
private var additionalProperties: MutableMap<String, JsonValue> = mutableMapOf()
@@ -206,13 +206,13 @@ private constructor(
206206
fun status(status: JsonField<Status>) = apply { this.status = status }
207207

208208
/** Reason for the evaluation status. */
209-
fun statusReasons(statusReasons: List<StatusReason>) =
209+
fun statusReasons(statusReasons: List<StatusReasons>) =
210210
statusReasons(JsonField.of(statusReasons))
211211

212212
/** Reason for the evaluation status. */
213213
@JsonProperty("status_reasons")
214214
@ExcludeMissing
215-
fun statusReasons(statusReasons: JsonField<List<StatusReason>>) = apply {
215+
fun statusReasons(statusReasons: JsonField<List<StatusReasons>>) = apply {
216216
this.statusReasons = statusReasons
217217
}
218218

@@ -343,7 +343,7 @@ private constructor(
343343
fun asString(): String = _value().asStringOrThrow()
344344
}
345345

346-
class StatusReason
346+
class StatusReasons
347347
@JsonCreator
348348
private constructor(
349349
private val value: JsonField<String>,
@@ -356,7 +356,7 @@ private constructor(
356356
return true
357357
}
358358

359-
return /* spotless:off */ other is StatusReason && this.value == other.value /* spotless:on */
359+
return /* spotless:off */ other is StatusReasons && this.value == other.value /* spotless:on */
360360
}
361361

362362
override fun hashCode() = value.hashCode()
@@ -367,41 +367,93 @@ private constructor(
367367

368368
@JvmField
369369
val ADDRESS_VERIFICATION_FAILURE =
370-
StatusReason(JsonField.of("ADDRESS_VERIFICATION_FAILURE"))
370+
StatusReasons(JsonField.of("ADDRESS_VERIFICATION_FAILURE"))
371371

372372
@JvmField
373-
val AGE_THRESHOLD_FAILURE = StatusReason(JsonField.of("AGE_THRESHOLD_FAILURE"))
373+
val AGE_THRESHOLD_FAILURE = StatusReasons(JsonField.of("AGE_THRESHOLD_FAILURE"))
374374

375375
@JvmField
376376
val COMPLETE_VERIFICATION_FAILURE =
377-
StatusReason(JsonField.of("COMPLETE_VERIFICATION_FAILURE"))
377+
StatusReasons(JsonField.of("COMPLETE_VERIFICATION_FAILURE"))
378378

379379
@JvmField
380-
val DOB_VERIFICATION_FAILURE = StatusReason(JsonField.of("DOB_VERIFICATION_FAILURE"))
380+
val DOB_VERIFICATION_FAILURE = StatusReasons(JsonField.of("DOB_VERIFICATION_FAILURE"))
381381

382382
@JvmField
383-
val ID_VERIFICATION_FAILURE = StatusReason(JsonField.of("ID_VERIFICATION_FAILURE"))
383+
val ID_VERIFICATION_FAILURE = StatusReasons(JsonField.of("ID_VERIFICATION_FAILURE"))
384384

385385
@JvmField
386-
val MAX_DOCUMENT_ATTEMPTS = StatusReason(JsonField.of("MAX_DOCUMENT_ATTEMPTS"))
386+
val MAX_DOCUMENT_ATTEMPTS = StatusReasons(JsonField.of("MAX_DOCUMENT_ATTEMPTS"))
387387

388388
@JvmField
389-
val MAX_RESUBMISSION_ATTEMPTS = StatusReason(JsonField.of("MAX_RESUBMISSION_ATTEMPTS"))
389+
val MAX_RESUBMISSION_ATTEMPTS = StatusReasons(JsonField.of("MAX_RESUBMISSION_ATTEMPTS"))
390390

391391
@JvmField
392-
val NAME_VERIFICATION_FAILURE = StatusReason(JsonField.of("NAME_VERIFICATION_FAILURE"))
392+
val NAME_VERIFICATION_FAILURE = StatusReasons(JsonField.of("NAME_VERIFICATION_FAILURE"))
393393

394394
@JvmField
395395
val OTHER_VERIFICATION_FAILURE =
396-
StatusReason(JsonField.of("OTHER_VERIFICATION_FAILURE"))
396+
StatusReasons(JsonField.of("OTHER_VERIFICATION_FAILURE"))
397397

398398
@JvmField
399-
val RISK_THRESHOLD_FAILURE = StatusReason(JsonField.of("RISK_THRESHOLD_FAILURE"))
399+
val RISK_THRESHOLD_FAILURE = StatusReasons(JsonField.of("RISK_THRESHOLD_FAILURE"))
400400

401401
@JvmField
402-
val WATCHLIST_ALERT_FAILURE = StatusReason(JsonField.of("WATCHLIST_ALERT_FAILURE"))
402+
val WATCHLIST_ALERT_FAILURE = StatusReasons(JsonField.of("WATCHLIST_ALERT_FAILURE"))
403403

404-
@JvmStatic fun of(value: String) = StatusReason(JsonField.of(value))
404+
@JvmField
405+
val PRIMARY_BUSINESS_ENTITY_ID_VERIFICATION_FAILURE =
406+
StatusReasons(JsonField.of("PRIMARY_BUSINESS_ENTITY_ID_VERIFICATION_FAILURE"))
407+
408+
@JvmField
409+
val PRIMARY_BUSINESS_ENTITY_ADDRESS_VERIFICATION_FAILURE =
410+
StatusReasons(JsonField.of("PRIMARY_BUSINESS_ENTITY_ADDRESS_VERIFICATION_FAILURE"))
411+
412+
@JvmField
413+
val PRIMARY_BUSINESS_ENTITY_NAME_VERIFICATION_FAILURE =
414+
StatusReasons(JsonField.of("PRIMARY_BUSINESS_ENTITY_NAME_VERIFICATION_FAILURE"))
415+
416+
@JvmField
417+
val PRIMARY_BUSINESS_ENTITY_BUSINESS_OFFICERS_NOT_MATCHED =
418+
StatusReasons(JsonField.of("PRIMARY_BUSINESS_ENTITY_BUSINESS_OFFICERS_NOT_MATCHED"))
419+
420+
@JvmField
421+
val PRIMARY_BUSINESS_ENTITY_SOS_FILING_INACTIVE =
422+
StatusReasons(JsonField.of("PRIMARY_BUSINESS_ENTITY_SOS_FILING_INACTIVE"))
423+
424+
@JvmField
425+
val PRIMARY_BUSINESS_ENTITY_SOS_NOT_MATCHED =
426+
StatusReasons(JsonField.of("PRIMARY_BUSINESS_ENTITY_SOS_NOT_MATCHED"))
427+
428+
@JvmField
429+
val PRIMARY_BUSINESS_ENTITY_CMRA_FAILURE =
430+
StatusReasons(JsonField.of("PRIMARY_BUSINESS_ENTITY_CMRA_FAILURE"))
431+
432+
@JvmField
433+
val PRIMARY_BUSINESS_ENTITY_WATCHLIST_FAILURE =
434+
StatusReasons(JsonField.of("PRIMARY_BUSINESS_ENTITY_WATCHLIST_FAILURE"))
435+
436+
@JvmField
437+
val PRIMARY_BUSINESS_ENTITY_REGISTERED_AGENT_FAILURE =
438+
StatusReasons(JsonField.of("PRIMARY_BUSINESS_ENTITY_REGISTERED_AGENT_FAILURE"))
439+
440+
@JvmField
441+
val CONTROL_PERSON_BLOCKLIST_ALERT_FAILURE =
442+
StatusReasons(JsonField.of("CONTROL_PERSON_BLOCKLIST_ALERT_FAILURE"))
443+
444+
@JvmField
445+
val CONTROL_PERSON_ID_VERIFICATION_FAILURE =
446+
StatusReasons(JsonField.of("CONTROL_PERSON_ID_VERIFICATION_FAILURE"))
447+
448+
@JvmField
449+
val CONTROL_PERSON_DOB_VERIFICATION_FAILURE =
450+
StatusReasons(JsonField.of("CONTROL_PERSON_DOB_VERIFICATION_FAILURE"))
451+
452+
@JvmField
453+
val CONTROL_PERSON_NAME_VERIFICATION_FAILURE =
454+
StatusReasons(JsonField.of("CONTROL_PERSON_NAME_VERIFICATION_FAILURE"))
455+
456+
@JvmStatic fun of(value: String) = StatusReasons(JsonField.of(value))
405457
}
406458

407459
enum class Known {
@@ -416,6 +468,19 @@ private constructor(
416468
OTHER_VERIFICATION_FAILURE,
417469
RISK_THRESHOLD_FAILURE,
418470
WATCHLIST_ALERT_FAILURE,
471+
PRIMARY_BUSINESS_ENTITY_ID_VERIFICATION_FAILURE,
472+
PRIMARY_BUSINESS_ENTITY_ADDRESS_VERIFICATION_FAILURE,
473+
PRIMARY_BUSINESS_ENTITY_NAME_VERIFICATION_FAILURE,
474+
PRIMARY_BUSINESS_ENTITY_BUSINESS_OFFICERS_NOT_MATCHED,
475+
PRIMARY_BUSINESS_ENTITY_SOS_FILING_INACTIVE,
476+
PRIMARY_BUSINESS_ENTITY_SOS_NOT_MATCHED,
477+
PRIMARY_BUSINESS_ENTITY_CMRA_FAILURE,
478+
PRIMARY_BUSINESS_ENTITY_WATCHLIST_FAILURE,
479+
PRIMARY_BUSINESS_ENTITY_REGISTERED_AGENT_FAILURE,
480+
CONTROL_PERSON_BLOCKLIST_ALERT_FAILURE,
481+
CONTROL_PERSON_ID_VERIFICATION_FAILURE,
482+
CONTROL_PERSON_DOB_VERIFICATION_FAILURE,
483+
CONTROL_PERSON_NAME_VERIFICATION_FAILURE,
419484
}
420485

421486
enum class Value {
@@ -430,6 +495,19 @@ private constructor(
430495
OTHER_VERIFICATION_FAILURE,
431496
RISK_THRESHOLD_FAILURE,
432497
WATCHLIST_ALERT_FAILURE,
498+
PRIMARY_BUSINESS_ENTITY_ID_VERIFICATION_FAILURE,
499+
PRIMARY_BUSINESS_ENTITY_ADDRESS_VERIFICATION_FAILURE,
500+
PRIMARY_BUSINESS_ENTITY_NAME_VERIFICATION_FAILURE,
501+
PRIMARY_BUSINESS_ENTITY_BUSINESS_OFFICERS_NOT_MATCHED,
502+
PRIMARY_BUSINESS_ENTITY_SOS_FILING_INACTIVE,
503+
PRIMARY_BUSINESS_ENTITY_SOS_NOT_MATCHED,
504+
PRIMARY_BUSINESS_ENTITY_CMRA_FAILURE,
505+
PRIMARY_BUSINESS_ENTITY_WATCHLIST_FAILURE,
506+
PRIMARY_BUSINESS_ENTITY_REGISTERED_AGENT_FAILURE,
507+
CONTROL_PERSON_BLOCKLIST_ALERT_FAILURE,
508+
CONTROL_PERSON_ID_VERIFICATION_FAILURE,
509+
CONTROL_PERSON_DOB_VERIFICATION_FAILURE,
510+
CONTROL_PERSON_NAME_VERIFICATION_FAILURE,
433511
_UNKNOWN,
434512
}
435513

@@ -446,6 +524,31 @@ private constructor(
446524
OTHER_VERIFICATION_FAILURE -> Value.OTHER_VERIFICATION_FAILURE
447525
RISK_THRESHOLD_FAILURE -> Value.RISK_THRESHOLD_FAILURE
448526
WATCHLIST_ALERT_FAILURE -> Value.WATCHLIST_ALERT_FAILURE
527+
PRIMARY_BUSINESS_ENTITY_ID_VERIFICATION_FAILURE ->
528+
Value.PRIMARY_BUSINESS_ENTITY_ID_VERIFICATION_FAILURE
529+
PRIMARY_BUSINESS_ENTITY_ADDRESS_VERIFICATION_FAILURE ->
530+
Value.PRIMARY_BUSINESS_ENTITY_ADDRESS_VERIFICATION_FAILURE
531+
PRIMARY_BUSINESS_ENTITY_NAME_VERIFICATION_FAILURE ->
532+
Value.PRIMARY_BUSINESS_ENTITY_NAME_VERIFICATION_FAILURE
533+
PRIMARY_BUSINESS_ENTITY_BUSINESS_OFFICERS_NOT_MATCHED ->
534+
Value.PRIMARY_BUSINESS_ENTITY_BUSINESS_OFFICERS_NOT_MATCHED
535+
PRIMARY_BUSINESS_ENTITY_SOS_FILING_INACTIVE ->
536+
Value.PRIMARY_BUSINESS_ENTITY_SOS_FILING_INACTIVE
537+
PRIMARY_BUSINESS_ENTITY_SOS_NOT_MATCHED ->
538+
Value.PRIMARY_BUSINESS_ENTITY_SOS_NOT_MATCHED
539+
PRIMARY_BUSINESS_ENTITY_CMRA_FAILURE -> Value.PRIMARY_BUSINESS_ENTITY_CMRA_FAILURE
540+
PRIMARY_BUSINESS_ENTITY_WATCHLIST_FAILURE ->
541+
Value.PRIMARY_BUSINESS_ENTITY_WATCHLIST_FAILURE
542+
PRIMARY_BUSINESS_ENTITY_REGISTERED_AGENT_FAILURE ->
543+
Value.PRIMARY_BUSINESS_ENTITY_REGISTERED_AGENT_FAILURE
544+
CONTROL_PERSON_BLOCKLIST_ALERT_FAILURE ->
545+
Value.CONTROL_PERSON_BLOCKLIST_ALERT_FAILURE
546+
CONTROL_PERSON_ID_VERIFICATION_FAILURE ->
547+
Value.CONTROL_PERSON_ID_VERIFICATION_FAILURE
548+
CONTROL_PERSON_DOB_VERIFICATION_FAILURE ->
549+
Value.CONTROL_PERSON_DOB_VERIFICATION_FAILURE
550+
CONTROL_PERSON_NAME_VERIFICATION_FAILURE ->
551+
Value.CONTROL_PERSON_NAME_VERIFICATION_FAILURE
449552
else -> Value._UNKNOWN
450553
}
451554

@@ -462,7 +565,32 @@ private constructor(
462565
OTHER_VERIFICATION_FAILURE -> Known.OTHER_VERIFICATION_FAILURE
463566
RISK_THRESHOLD_FAILURE -> Known.RISK_THRESHOLD_FAILURE
464567
WATCHLIST_ALERT_FAILURE -> Known.WATCHLIST_ALERT_FAILURE
465-
else -> throw LithicInvalidDataException("Unknown StatusReason: $value")
568+
PRIMARY_BUSINESS_ENTITY_ID_VERIFICATION_FAILURE ->
569+
Known.PRIMARY_BUSINESS_ENTITY_ID_VERIFICATION_FAILURE
570+
PRIMARY_BUSINESS_ENTITY_ADDRESS_VERIFICATION_FAILURE ->
571+
Known.PRIMARY_BUSINESS_ENTITY_ADDRESS_VERIFICATION_FAILURE
572+
PRIMARY_BUSINESS_ENTITY_NAME_VERIFICATION_FAILURE ->
573+
Known.PRIMARY_BUSINESS_ENTITY_NAME_VERIFICATION_FAILURE
574+
PRIMARY_BUSINESS_ENTITY_BUSINESS_OFFICERS_NOT_MATCHED ->
575+
Known.PRIMARY_BUSINESS_ENTITY_BUSINESS_OFFICERS_NOT_MATCHED
576+
PRIMARY_BUSINESS_ENTITY_SOS_FILING_INACTIVE ->
577+
Known.PRIMARY_BUSINESS_ENTITY_SOS_FILING_INACTIVE
578+
PRIMARY_BUSINESS_ENTITY_SOS_NOT_MATCHED ->
579+
Known.PRIMARY_BUSINESS_ENTITY_SOS_NOT_MATCHED
580+
PRIMARY_BUSINESS_ENTITY_CMRA_FAILURE -> Known.PRIMARY_BUSINESS_ENTITY_CMRA_FAILURE
581+
PRIMARY_BUSINESS_ENTITY_WATCHLIST_FAILURE ->
582+
Known.PRIMARY_BUSINESS_ENTITY_WATCHLIST_FAILURE
583+
PRIMARY_BUSINESS_ENTITY_REGISTERED_AGENT_FAILURE ->
584+
Known.PRIMARY_BUSINESS_ENTITY_REGISTERED_AGENT_FAILURE
585+
CONTROL_PERSON_BLOCKLIST_ALERT_FAILURE ->
586+
Known.CONTROL_PERSON_BLOCKLIST_ALERT_FAILURE
587+
CONTROL_PERSON_ID_VERIFICATION_FAILURE ->
588+
Known.CONTROL_PERSON_ID_VERIFICATION_FAILURE
589+
CONTROL_PERSON_DOB_VERIFICATION_FAILURE ->
590+
Known.CONTROL_PERSON_DOB_VERIFICATION_FAILURE
591+
CONTROL_PERSON_NAME_VERIFICATION_FAILURE ->
592+
Known.CONTROL_PERSON_NAME_VERIFICATION_FAILURE
593+
else -> throw LithicInvalidDataException("Unknown StatusReasons: $value")
466594
}
467595

468596
fun asString(): String = _value().asStringOrThrow()

0 commit comments

Comments
 (0)