From d22557adeedb4447fa7b1e6567addf33ac6f34af Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 00:56:30 +0000 Subject: [PATCH 1/2] feat(api): api update --- .stats.yml | 6 +- .../com/increase/api/client/IncreaseClient.kt | 5 - .../api/client/IncreaseClientAsync.kt | 5 - .../api/client/IncreaseClientAsyncImpl.kt | 14 - .../increase/api/client/IncreaseClientImpl.kt | 14 - .../CardCreateDetailsIframeParams.kt} | 53 ++-- .../{carddetails => cards}/CardDetails.kt | 2 +- .../CardDetailsParams.kt} | 32 +-- .../{carddetails => cards}/CardIframeUrl.kt | 2 +- .../api/models/cards/CardUpdateParams.kt | 68 +---- .../CardUpdatePinParams.kt} | 32 +-- .../services/async/CardDetailServiceAsync.kt | 252 ------------------ .../async/CardDetailServiceAsyncImpl.kt | 175 ------------ .../api/services/async/CardServiceAsync.kt | 211 +++++++++++++++ .../services/async/CardServiceAsyncImpl.kt | 127 +++++++++ .../services/blocking/CardDetailService.kt | 247 ----------------- .../blocking/CardDetailServiceImpl.kt | 165 ------------ .../api/services/blocking/CardService.kt | 207 ++++++++++++++ .../api/services/blocking/CardServiceImpl.kt | 115 ++++++++ .../CardCreateDetailsIframeParamsTest.kt} | 16 +- .../CardDetailsParamsTest.kt} | 8 +- .../{carddetails => cards}/CardDetailsTest.kt | 2 +- .../CardIframeUrlTest.kt | 2 +- .../api/models/cards/CardUpdateParamsTest.kt | 3 - .../CardUpdatePinParamsTest.kt} | 10 +- .../async/CardDetailServiceAsyncTest.kt | 71 ----- .../services/async/CardServiceAsyncTest.kt | 60 ++++- .../blocking/CardDetailServiceTest.kt | 68 ----- .../api/services/blocking/CardServiceTest.kt | 57 +++- .../api/proguard/ProGuardCompatibilityTest.kt | 1 - 30 files changed, 859 insertions(+), 1171 deletions(-) rename increase-java-core/src/main/kotlin/com/increase/api/models/{carddetails/CardDetailCreateDetailsIframeParams.kt => cards/CardCreateDetailsIframeParams.kt} (88%) rename increase-java-core/src/main/kotlin/com/increase/api/models/{carddetails => cards}/CardDetails.kt (99%) rename increase-java-core/src/main/kotlin/com/increase/api/models/{carddetails/CardDetailDetailsParams.kt => cards/CardDetailsParams.kt} (85%) rename increase-java-core/src/main/kotlin/com/increase/api/models/{carddetails => cards}/CardIframeUrl.kt (99%) rename increase-java-core/src/main/kotlin/com/increase/api/models/{carddetails/CardDetailUpdateParams.kt => cards/CardUpdatePinParams.kt} (93%) delete mode 100644 increase-java-core/src/main/kotlin/com/increase/api/services/async/CardDetailServiceAsync.kt delete mode 100644 increase-java-core/src/main/kotlin/com/increase/api/services/async/CardDetailServiceAsyncImpl.kt delete mode 100644 increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardDetailService.kt delete mode 100644 increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardDetailServiceImpl.kt rename increase-java-core/src/test/kotlin/com/increase/api/models/{carddetails/CardDetailCreateDetailsIframeParamsTest.kt => cards/CardCreateDetailsIframeParamsTest.kt} (65%) rename increase-java-core/src/test/kotlin/com/increase/api/models/{carddetails/CardDetailDetailsParamsTest.kt => cards/CardDetailsParamsTest.kt} (58%) rename increase-java-core/src/test/kotlin/com/increase/api/models/{carddetails => cards}/CardDetailsTest.kt (97%) rename increase-java-core/src/test/kotlin/com/increase/api/models/{carddetails => cards}/CardIframeUrlTest.kt (97%) rename increase-java-core/src/test/kotlin/com/increase/api/models/{carddetails/CardDetailUpdateParamsTest.kt => cards/CardUpdatePinParamsTest.kt} (58%) delete mode 100644 increase-java-core/src/test/kotlin/com/increase/api/services/async/CardDetailServiceAsyncTest.kt delete mode 100644 increase-java-core/src/test/kotlin/com/increase/api/services/blocking/CardDetailServiceTest.kt diff --git a/.stats.yml b/.stats.yml index afc57da05..5a7b82c92 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 214 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-4c440e14682c4e4c886da6d05b2f5ff539a3aadc6906bb4069a5df45e0d3cae9.yml -openapi_spec_hash: e400be1da67cec4ce706eda1868dd86b -config_hash: 8dadd60eab7ab858cf06c6a8633ed9f3 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-e0a19c46b65842ff370613aac24ba8777d7b961bd46a20e936e878386e048852.yml +openapi_spec_hash: 0f635610cedd9a0aacc6d5b347c3cccf +config_hash: a143293c5450ae8f52acad08f3102575 diff --git a/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClient.kt b/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClient.kt index 043884976..952133bfb 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClient.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClient.kt @@ -12,7 +12,6 @@ import com.increase.api.services.blocking.AchTransferService import com.increase.api.services.blocking.BookkeepingAccountService import com.increase.api.services.blocking.BookkeepingEntryService import com.increase.api.services.blocking.BookkeepingEntrySetService -import com.increase.api.services.blocking.CardDetailService import com.increase.api.services.blocking.CardPaymentService import com.increase.api.services.blocking.CardPurchaseSupplementService import com.increase.api.services.blocking.CardPushTransferService @@ -105,8 +104,6 @@ interface IncreaseClient { fun cards(): CardService - fun cardDetails(): CardDetailService - fun cardPayments(): CardPaymentService fun cardPurchaseSupplements(): CardPurchaseSupplementService @@ -240,8 +237,6 @@ interface IncreaseClient { fun cards(): CardService.WithRawResponse - fun cardDetails(): CardDetailService.WithRawResponse - fun cardPayments(): CardPaymentService.WithRawResponse fun cardPurchaseSupplements(): CardPurchaseSupplementService.WithRawResponse diff --git a/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientAsync.kt b/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientAsync.kt index 6a8f5b80a..254077478 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientAsync.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientAsync.kt @@ -12,7 +12,6 @@ import com.increase.api.services.async.AchTransferServiceAsync import com.increase.api.services.async.BookkeepingAccountServiceAsync import com.increase.api.services.async.BookkeepingEntryServiceAsync import com.increase.api.services.async.BookkeepingEntrySetServiceAsync -import com.increase.api.services.async.CardDetailServiceAsync import com.increase.api.services.async.CardPaymentServiceAsync import com.increase.api.services.async.CardPurchaseSupplementServiceAsync import com.increase.api.services.async.CardPushTransferServiceAsync @@ -105,8 +104,6 @@ interface IncreaseClientAsync { fun cards(): CardServiceAsync - fun cardDetails(): CardDetailServiceAsync - fun cardPayments(): CardPaymentServiceAsync fun cardPurchaseSupplements(): CardPurchaseSupplementServiceAsync @@ -244,8 +241,6 @@ interface IncreaseClientAsync { fun cards(): CardServiceAsync.WithRawResponse - fun cardDetails(): CardDetailServiceAsync.WithRawResponse - fun cardPayments(): CardPaymentServiceAsync.WithRawResponse fun cardPurchaseSupplements(): CardPurchaseSupplementServiceAsync.WithRawResponse diff --git a/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientAsyncImpl.kt b/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientAsyncImpl.kt index 7d133d327..7c881b56d 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientAsyncImpl.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientAsyncImpl.kt @@ -22,8 +22,6 @@ import com.increase.api.services.async.BookkeepingEntryServiceAsync import com.increase.api.services.async.BookkeepingEntryServiceAsyncImpl import com.increase.api.services.async.BookkeepingEntrySetServiceAsync import com.increase.api.services.async.BookkeepingEntrySetServiceAsyncImpl -import com.increase.api.services.async.CardDetailServiceAsync -import com.increase.api.services.async.CardDetailServiceAsyncImpl import com.increase.api.services.async.CardPaymentServiceAsync import com.increase.api.services.async.CardPaymentServiceAsyncImpl import com.increase.api.services.async.CardPurchaseSupplementServiceAsync @@ -149,10 +147,6 @@ class IncreaseClientAsyncImpl(private val clientOptions: ClientOptions) : Increa private val cards: CardServiceAsync by lazy { CardServiceAsyncImpl(clientOptionsWithUserAgent) } - private val cardDetails: CardDetailServiceAsync by lazy { - CardDetailServiceAsyncImpl(clientOptionsWithUserAgent) - } - private val cardPayments: CardPaymentServiceAsync by lazy { CardPaymentServiceAsyncImpl(clientOptionsWithUserAgent) } @@ -369,8 +363,6 @@ class IncreaseClientAsyncImpl(private val clientOptions: ClientOptions) : Increa override fun cards(): CardServiceAsync = cards - override fun cardDetails(): CardDetailServiceAsync = cardDetails - override fun cardPayments(): CardPaymentServiceAsync = cardPayments override fun cardPurchaseSupplements(): CardPurchaseSupplementServiceAsync = @@ -499,10 +491,6 @@ class IncreaseClientAsyncImpl(private val clientOptions: ClientOptions) : Increa CardServiceAsyncImpl.WithRawResponseImpl(clientOptions) } - private val cardDetails: CardDetailServiceAsync.WithRawResponse by lazy { - CardDetailServiceAsyncImpl.WithRawResponseImpl(clientOptions) - } - private val cardPayments: CardPaymentServiceAsync.WithRawResponse by lazy { CardPaymentServiceAsyncImpl.WithRawResponseImpl(clientOptions) } @@ -725,8 +713,6 @@ class IncreaseClientAsyncImpl(private val clientOptions: ClientOptions) : Increa override fun cards(): CardServiceAsync.WithRawResponse = cards - override fun cardDetails(): CardDetailServiceAsync.WithRawResponse = cardDetails - override fun cardPayments(): CardPaymentServiceAsync.WithRawResponse = cardPayments override fun cardPurchaseSupplements(): CardPurchaseSupplementServiceAsync.WithRawResponse = diff --git a/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientImpl.kt b/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientImpl.kt index 300cf175e..b2c6d0aa0 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientImpl.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/client/IncreaseClientImpl.kt @@ -22,8 +22,6 @@ import com.increase.api.services.blocking.BookkeepingEntryService import com.increase.api.services.blocking.BookkeepingEntryServiceImpl import com.increase.api.services.blocking.BookkeepingEntrySetService import com.increase.api.services.blocking.BookkeepingEntrySetServiceImpl -import com.increase.api.services.blocking.CardDetailService -import com.increase.api.services.blocking.CardDetailServiceImpl import com.increase.api.services.blocking.CardPaymentService import com.increase.api.services.blocking.CardPaymentServiceImpl import com.increase.api.services.blocking.CardPurchaseSupplementService @@ -147,10 +145,6 @@ class IncreaseClientImpl(private val clientOptions: ClientOptions) : IncreaseCli private val cards: CardService by lazy { CardServiceImpl(clientOptionsWithUserAgent) } - private val cardDetails: CardDetailService by lazy { - CardDetailServiceImpl(clientOptionsWithUserAgent) - } - private val cardPayments: CardPaymentService by lazy { CardPaymentServiceImpl(clientOptionsWithUserAgent) } @@ -354,8 +348,6 @@ class IncreaseClientImpl(private val clientOptions: ClientOptions) : IncreaseCli override fun cards(): CardService = cards - override fun cardDetails(): CardDetailService = cardDetails - override fun cardPayments(): CardPaymentService = cardPayments override fun cardPurchaseSupplements(): CardPurchaseSupplementService = cardPurchaseSupplements @@ -483,10 +475,6 @@ class IncreaseClientImpl(private val clientOptions: ClientOptions) : IncreaseCli CardServiceImpl.WithRawResponseImpl(clientOptions) } - private val cardDetails: CardDetailService.WithRawResponse by lazy { - CardDetailServiceImpl.WithRawResponseImpl(clientOptions) - } - private val cardPayments: CardPaymentService.WithRawResponse by lazy { CardPaymentServiceImpl.WithRawResponseImpl(clientOptions) } @@ -706,8 +694,6 @@ class IncreaseClientImpl(private val clientOptions: ClientOptions) : IncreaseCli override fun cards(): CardService.WithRawResponse = cards - override fun cardDetails(): CardDetailService.WithRawResponse = cardDetails - override fun cardPayments(): CardPaymentService.WithRawResponse = cardPayments override fun cardPurchaseSupplements(): CardPurchaseSupplementService.WithRawResponse = diff --git a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetailCreateDetailsIframeParams.kt b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardCreateDetailsIframeParams.kt similarity index 88% rename from increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetailCreateDetailsIframeParams.kt rename to increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardCreateDetailsIframeParams.kt index 4c62b8124..0e13bfe0d 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetailCreateDetailsIframeParams.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardCreateDetailsIframeParams.kt @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter @@ -23,7 +23,7 @@ import kotlin.jvm.optionals.getOrNull * Create an iframe URL for a Card to display the card details. More details about styling and usage * can be found in the [documentation](/documentation/embedded-card-component). */ -class CardDetailCreateDetailsIframeParams +class CardCreateDetailsIframeParams private constructor( private val cardId: String?, private val body: Body, @@ -31,11 +31,12 @@ private constructor( private val additionalQueryParams: QueryParams, ) : Params { - /** The identifier of the Card to retrieve details for. */ + /** The identifier of the Card to create an iframe for. */ fun cardId(): Optional = Optional.ofNullable(cardId) /** - * The identifier of the Physical Card to retrieve details for. + * The identifier of the Physical Card to create an iframe for. This will inform the appearance + * of the card rendered in the iframe. * * @throws IncreaseInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -61,16 +62,16 @@ private constructor( companion object { - @JvmStatic fun none(): CardDetailCreateDetailsIframeParams = builder().build() + @JvmStatic fun none(): CardCreateDetailsIframeParams = builder().build() /** * Returns a mutable builder for constructing an instance of - * [CardDetailCreateDetailsIframeParams]. + * [CardCreateDetailsIframeParams]. */ @JvmStatic fun builder() = Builder() } - /** A builder for [CardDetailCreateDetailsIframeParams]. */ + /** A builder for [CardCreateDetailsIframeParams]. */ class Builder internal constructor() { private var cardId: String? = null @@ -79,17 +80,14 @@ private constructor( private var additionalQueryParams: QueryParams.Builder = QueryParams.builder() @JvmSynthetic - internal fun from( - cardDetailCreateDetailsIframeParams: CardDetailCreateDetailsIframeParams - ) = apply { - cardId = cardDetailCreateDetailsIframeParams.cardId - body = cardDetailCreateDetailsIframeParams.body.toBuilder() - additionalHeaders = cardDetailCreateDetailsIframeParams.additionalHeaders.toBuilder() - additionalQueryParams = - cardDetailCreateDetailsIframeParams.additionalQueryParams.toBuilder() + internal fun from(cardCreateDetailsIframeParams: CardCreateDetailsIframeParams) = apply { + cardId = cardCreateDetailsIframeParams.cardId + body = cardCreateDetailsIframeParams.body.toBuilder() + additionalHeaders = cardCreateDetailsIframeParams.additionalHeaders.toBuilder() + additionalQueryParams = cardCreateDetailsIframeParams.additionalQueryParams.toBuilder() } - /** The identifier of the Card to retrieve details for. */ + /** The identifier of the Card to create an iframe for. */ fun cardId(cardId: String?) = apply { this.cardId = cardId } /** Alias for calling [Builder.cardId] with `cardId.orElse(null)`. */ @@ -104,7 +102,10 @@ private constructor( */ fun body(body: Body) = apply { this.body = body.toBuilder() } - /** The identifier of the Physical Card to retrieve details for. */ + /** + * The identifier of the Physical Card to create an iframe for. This will inform the + * appearance of the card rendered in the iframe. + */ fun physicalCardId(physicalCardId: String) = apply { body.physicalCardId(physicalCardId) } /** @@ -236,12 +237,12 @@ private constructor( } /** - * Returns an immutable instance of [CardDetailCreateDetailsIframeParams]. + * Returns an immutable instance of [CardCreateDetailsIframeParams]. * * Further updates to this [Builder] will not mutate the returned instance. */ - fun build(): CardDetailCreateDetailsIframeParams = - CardDetailCreateDetailsIframeParams( + fun build(): CardCreateDetailsIframeParams = + CardCreateDetailsIframeParams( cardId, body.build(), additionalHeaders.build(), @@ -275,7 +276,8 @@ private constructor( ) : this(physicalCardId, mutableMapOf()) /** - * The identifier of the Physical Card to retrieve details for. + * The identifier of the Physical Card to create an iframe for. This will inform the + * appearance of the card rendered in the iframe. * * @throws IncreaseInvalidDataException if the JSON field has an unexpected type (e.g. if * the server responded with an unexpected value). @@ -322,7 +324,10 @@ private constructor( additionalProperties = body.additionalProperties.toMutableMap() } - /** The identifier of the Physical Card to retrieve details for. */ + /** + * The identifier of the Physical Card to create an iframe for. This will inform the + * appearance of the card rendered in the iframe. + */ fun physicalCardId(physicalCardId: String) = physicalCardId(JsonField.of(physicalCardId)) @@ -415,7 +420,7 @@ private constructor( return true } - return other is CardDetailCreateDetailsIframeParams && + return other is CardCreateDetailsIframeParams && cardId == other.cardId && body == other.body && additionalHeaders == other.additionalHeaders && @@ -426,5 +431,5 @@ private constructor( Objects.hash(cardId, body, additionalHeaders, additionalQueryParams) override fun toString() = - "CardDetailCreateDetailsIframeParams{cardId=$cardId, body=$body, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams}" + "CardCreateDetailsIframeParams{cardId=$cardId, body=$body, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams}" } diff --git a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetails.kt b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardDetails.kt similarity index 99% rename from increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetails.kt rename to increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardDetails.kt index a6bb8015c..037b2dea6 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetails.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardDetails.kt @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter diff --git a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetailDetailsParams.kt b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardDetailsParams.kt similarity index 85% rename from increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetailDetailsParams.kt rename to increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardDetailsParams.kt index 7dae413a4..d4c911a4e 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetailDetailsParams.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardDetailsParams.kt @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import com.increase.api.core.Params import com.increase.api.core.http.Headers @@ -13,7 +13,7 @@ import kotlin.jvm.optionals.getOrNull * Sensitive details for a Card include the primary account number, expiry, card verification code, * and PIN. */ -class CardDetailDetailsParams +class CardDetailsParams private constructor( private val cardId: String?, private val additionalHeaders: Headers, @@ -33,13 +33,13 @@ private constructor( companion object { - @JvmStatic fun none(): CardDetailDetailsParams = builder().build() + @JvmStatic fun none(): CardDetailsParams = builder().build() - /** Returns a mutable builder for constructing an instance of [CardDetailDetailsParams]. */ + /** Returns a mutable builder for constructing an instance of [CardDetailsParams]. */ @JvmStatic fun builder() = Builder() } - /** A builder for [CardDetailDetailsParams]. */ + /** A builder for [CardDetailsParams]. */ class Builder internal constructor() { private var cardId: String? = null @@ -47,10 +47,10 @@ private constructor( private var additionalQueryParams: QueryParams.Builder = QueryParams.builder() @JvmSynthetic - internal fun from(cardDetailDetailsParams: CardDetailDetailsParams) = apply { - cardId = cardDetailDetailsParams.cardId - additionalHeaders = cardDetailDetailsParams.additionalHeaders.toBuilder() - additionalQueryParams = cardDetailDetailsParams.additionalQueryParams.toBuilder() + internal fun from(cardDetailsParams: CardDetailsParams) = apply { + cardId = cardDetailsParams.cardId + additionalHeaders = cardDetailsParams.additionalHeaders.toBuilder() + additionalQueryParams = cardDetailsParams.additionalQueryParams.toBuilder() } /** The identifier of the Card to retrieve details for. */ @@ -158,16 +158,12 @@ private constructor( } /** - * Returns an immutable instance of [CardDetailDetailsParams]. + * Returns an immutable instance of [CardDetailsParams]. * * Further updates to this [Builder] will not mutate the returned instance. */ - fun build(): CardDetailDetailsParams = - CardDetailDetailsParams( - cardId, - additionalHeaders.build(), - additionalQueryParams.build(), - ) + fun build(): CardDetailsParams = + CardDetailsParams(cardId, additionalHeaders.build(), additionalQueryParams.build()) } fun _pathParam(index: Int): String = @@ -185,7 +181,7 @@ private constructor( return true } - return other is CardDetailDetailsParams && + return other is CardDetailsParams && cardId == other.cardId && additionalHeaders == other.additionalHeaders && additionalQueryParams == other.additionalQueryParams @@ -194,5 +190,5 @@ private constructor( override fun hashCode(): Int = Objects.hash(cardId, additionalHeaders, additionalQueryParams) override fun toString() = - "CardDetailDetailsParams{cardId=$cardId, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams}" + "CardDetailsParams{cardId=$cardId, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams}" } diff --git a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardIframeUrl.kt b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardIframeUrl.kt similarity index 99% rename from increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardIframeUrl.kt rename to increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardIframeUrl.kt index 2726e185f..86cb1b129 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardIframeUrl.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardIframeUrl.kt @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter diff --git a/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardUpdateParams.kt b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardUpdateParams.kt index 36c988181..9d5ca7299 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardUpdateParams.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardUpdateParams.kt @@ -67,14 +67,6 @@ private constructor( */ fun entityId(): Optional = body.entityId() - /** - * The 4-digit PIN for the card, for use with ATMs. - * - * @throws IncreaseInvalidDataException if the JSON field has an unexpected type (e.g. if the - * server responded with an unexpected value). - */ - fun pin(): Optional = body.pin() - /** * The status to update the Card with. * @@ -111,13 +103,6 @@ private constructor( */ fun _entityId(): JsonField = body._entityId() - /** - * Returns the raw JSON value of [pin]. - * - * Unlike [pin], this method doesn't throw if the JSON field has an unexpected type. - */ - fun _pin(): JsonField = body._pin() - /** * Returns the raw JSON value of [status]. * @@ -174,7 +159,7 @@ private constructor( * - [description] * - [digitalWallet] * - [entityId] - * - [pin] + * - [status] * - etc. */ fun body(body: Body) = apply { this.body = body.toBuilder() } @@ -240,17 +225,6 @@ private constructor( */ fun entityId(entityId: JsonField) = apply { body.entityId(entityId) } - /** The 4-digit PIN for the card, for use with ATMs. */ - fun pin(pin: String) = apply { body.pin(pin) } - - /** - * Sets [Builder.pin] to an arbitrary JSON value. - * - * You should usually call [Builder.pin] with a well-typed [String] value instead. This - * method is primarily for setting the field to an undocumented or not yet supported value. - */ - fun pin(pin: JsonField) = apply { body.pin(pin) } - /** The status to update the Card with. */ fun status(status: Status) = apply { body.status(status) } @@ -411,7 +385,6 @@ private constructor( private val description: JsonField, private val digitalWallet: JsonField, private val entityId: JsonField, - private val pin: JsonField, private val status: JsonField, private val additionalProperties: MutableMap, ) { @@ -430,9 +403,8 @@ private constructor( @JsonProperty("entity_id") @ExcludeMissing entityId: JsonField = JsonMissing.of(), - @JsonProperty("pin") @ExcludeMissing pin: JsonField = JsonMissing.of(), @JsonProperty("status") @ExcludeMissing status: JsonField = JsonMissing.of(), - ) : this(billingAddress, description, digitalWallet, entityId, pin, status, mutableMapOf()) + ) : this(billingAddress, description, digitalWallet, entityId, status, mutableMapOf()) /** * The card's updated billing address. @@ -469,14 +441,6 @@ private constructor( */ fun entityId(): Optional = entityId.getOptional("entity_id") - /** - * The 4-digit PIN for the card, for use with ATMs. - * - * @throws IncreaseInvalidDataException if the JSON field has an unexpected type (e.g. if - * the server responded with an unexpected value). - */ - fun pin(): Optional = pin.getOptional("pin") - /** * The status to update the Card with. * @@ -521,13 +485,6 @@ private constructor( */ @JsonProperty("entity_id") @ExcludeMissing fun _entityId(): JsonField = entityId - /** - * Returns the raw JSON value of [pin]. - * - * Unlike [pin], this method doesn't throw if the JSON field has an unexpected type. - */ - @JsonProperty("pin") @ExcludeMissing fun _pin(): JsonField = pin - /** * Returns the raw JSON value of [status]. * @@ -560,7 +517,6 @@ private constructor( private var description: JsonField = JsonMissing.of() private var digitalWallet: JsonField = JsonMissing.of() private var entityId: JsonField = JsonMissing.of() - private var pin: JsonField = JsonMissing.of() private var status: JsonField = JsonMissing.of() private var additionalProperties: MutableMap = mutableMapOf() @@ -570,7 +526,6 @@ private constructor( description = body.description digitalWallet = body.digitalWallet entityId = body.entityId - pin = body.pin status = body.status additionalProperties = body.additionalProperties.toMutableMap() } @@ -637,18 +592,6 @@ private constructor( */ fun entityId(entityId: JsonField) = apply { this.entityId = entityId } - /** The 4-digit PIN for the card, for use with ATMs. */ - fun pin(pin: String) = pin(JsonField.of(pin)) - - /** - * Sets [Builder.pin] to an arbitrary JSON value. - * - * You should usually call [Builder.pin] with a well-typed [String] value instead. This - * method is primarily for setting the field to an undocumented or not yet supported - * value. - */ - fun pin(pin: JsonField) = apply { this.pin = pin } - /** The status to update the Card with. */ fun status(status: Status) = status(JsonField.of(status)) @@ -691,7 +634,6 @@ private constructor( description, digitalWallet, entityId, - pin, status, additionalProperties.toMutableMap(), ) @@ -708,7 +650,6 @@ private constructor( description() digitalWallet().ifPresent { it.validate() } entityId() - pin() status().ifPresent { it.validate() } validated = true } @@ -733,7 +674,6 @@ private constructor( (if (description.asKnown().isPresent) 1 else 0) + (digitalWallet.asKnown().getOrNull()?.validity() ?: 0) + (if (entityId.asKnown().isPresent) 1 else 0) + - (if (pin.asKnown().isPresent) 1 else 0) + (status.asKnown().getOrNull()?.validity() ?: 0) override fun equals(other: Any?): Boolean { @@ -746,7 +686,6 @@ private constructor( description == other.description && digitalWallet == other.digitalWallet && entityId == other.entityId && - pin == other.pin && status == other.status && additionalProperties == other.additionalProperties } @@ -757,7 +696,6 @@ private constructor( description, digitalWallet, entityId, - pin, status, additionalProperties, ) @@ -766,7 +704,7 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "Body{billingAddress=$billingAddress, description=$description, digitalWallet=$digitalWallet, entityId=$entityId, pin=$pin, status=$status, additionalProperties=$additionalProperties}" + "Body{billingAddress=$billingAddress, description=$description, digitalWallet=$digitalWallet, entityId=$entityId, status=$status, additionalProperties=$additionalProperties}" } /** The card's updated billing address. */ diff --git a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetailUpdateParams.kt b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardUpdatePinParams.kt similarity index 93% rename from increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetailUpdateParams.kt rename to increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardUpdatePinParams.kt index c62bff4c1..5f471a430 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/models/carddetails/CardDetailUpdateParams.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/models/cards/CardUpdatePinParams.kt @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter @@ -21,7 +21,7 @@ import java.util.Optional import kotlin.jvm.optionals.getOrNull /** Update a Card's PIN */ -class CardDetailUpdateParams +class CardUpdatePinParams private constructor( private val cardId: String?, private val body: Body, @@ -29,7 +29,7 @@ private constructor( private val additionalQueryParams: QueryParams, ) : Params { - /** The card identifier. */ + /** The identifier of the Card to update the PIN for. */ fun cardId(): Optional = Optional.ofNullable(cardId) /** @@ -60,7 +60,7 @@ private constructor( companion object { /** - * Returns a mutable builder for constructing an instance of [CardDetailUpdateParams]. + * Returns a mutable builder for constructing an instance of [CardUpdatePinParams]. * * The following fields are required: * ```java @@ -70,7 +70,7 @@ private constructor( @JvmStatic fun builder() = Builder() } - /** A builder for [CardDetailUpdateParams]. */ + /** A builder for [CardUpdatePinParams]. */ class Builder internal constructor() { private var cardId: String? = null @@ -79,14 +79,14 @@ private constructor( private var additionalQueryParams: QueryParams.Builder = QueryParams.builder() @JvmSynthetic - internal fun from(cardDetailUpdateParams: CardDetailUpdateParams) = apply { - cardId = cardDetailUpdateParams.cardId - body = cardDetailUpdateParams.body.toBuilder() - additionalHeaders = cardDetailUpdateParams.additionalHeaders.toBuilder() - additionalQueryParams = cardDetailUpdateParams.additionalQueryParams.toBuilder() + internal fun from(cardUpdatePinParams: CardUpdatePinParams) = apply { + cardId = cardUpdatePinParams.cardId + body = cardUpdatePinParams.body.toBuilder() + additionalHeaders = cardUpdatePinParams.additionalHeaders.toBuilder() + additionalQueryParams = cardUpdatePinParams.additionalQueryParams.toBuilder() } - /** The card identifier. */ + /** The identifier of the Card to update the PIN for. */ fun cardId(cardId: String?) = apply { this.cardId = cardId } /** Alias for calling [Builder.cardId] with `cardId.orElse(null)`. */ @@ -230,7 +230,7 @@ private constructor( } /** - * Returns an immutable instance of [CardDetailUpdateParams]. + * Returns an immutable instance of [CardUpdatePinParams]. * * Further updates to this [Builder] will not mutate the returned instance. * @@ -241,8 +241,8 @@ private constructor( * * @throws IllegalStateException if any required field is unset. */ - fun build(): CardDetailUpdateParams = - CardDetailUpdateParams( + fun build(): CardUpdatePinParams = + CardUpdatePinParams( cardId, body.build(), additionalHeaders.build(), @@ -420,7 +420,7 @@ private constructor( return true } - return other is CardDetailUpdateParams && + return other is CardUpdatePinParams && cardId == other.cardId && body == other.body && additionalHeaders == other.additionalHeaders && @@ -431,5 +431,5 @@ private constructor( Objects.hash(cardId, body, additionalHeaders, additionalQueryParams) override fun toString() = - "CardDetailUpdateParams{cardId=$cardId, body=$body, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams}" + "CardUpdatePinParams{cardId=$cardId, body=$body, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams}" } diff --git a/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardDetailServiceAsync.kt b/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardDetailServiceAsync.kt deleted file mode 100644 index 88a860529..000000000 --- a/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardDetailServiceAsync.kt +++ /dev/null @@ -1,252 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. - -package com.increase.api.services.async - -import com.increase.api.core.ClientOptions -import com.increase.api.core.RequestOptions -import com.increase.api.core.http.HttpResponseFor -import com.increase.api.models.carddetails.CardDetailCreateDetailsIframeParams -import com.increase.api.models.carddetails.CardDetailDetailsParams -import com.increase.api.models.carddetails.CardDetailUpdateParams -import com.increase.api.models.carddetails.CardDetails -import com.increase.api.models.carddetails.CardIframeUrl -import java.util.concurrent.CompletableFuture -import java.util.function.Consumer - -interface CardDetailServiceAsync { - - /** - * Returns a view of this service that provides access to raw HTTP responses for each method. - */ - fun withRawResponse(): WithRawResponse - - /** - * Returns a view of this service with the given option modifications applied. - * - * The original service is not modified. - */ - fun withOptions(modifier: Consumer): CardDetailServiceAsync - - /** Update a Card's PIN */ - fun update(cardId: String, params: CardDetailUpdateParams): CompletableFuture = - update(cardId, params, RequestOptions.none()) - - /** @see update */ - fun update( - cardId: String, - params: CardDetailUpdateParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture = - update(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see update */ - fun update(params: CardDetailUpdateParams): CompletableFuture = - update(params, RequestOptions.none()) - - /** @see update */ - fun update( - params: CardDetailUpdateParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture - - /** - * Create an iframe URL for a Card to display the card details. More details about styling and - * usage can be found in the [documentation](/documentation/embedded-card-component). - */ - fun createDetailsIframe(cardId: String): CompletableFuture = - createDetailsIframe(cardId, CardDetailCreateDetailsIframeParams.none()) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - cardId: String, - params: CardDetailCreateDetailsIframeParams = CardDetailCreateDetailsIframeParams.none(), - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture = - createDetailsIframe(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - cardId: String, - params: CardDetailCreateDetailsIframeParams = CardDetailCreateDetailsIframeParams.none(), - ): CompletableFuture = createDetailsIframe(cardId, params, RequestOptions.none()) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture - - /** @see createDetailsIframe */ - fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams - ): CompletableFuture = createDetailsIframe(params, RequestOptions.none()) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - cardId: String, - requestOptions: RequestOptions, - ): CompletableFuture = - createDetailsIframe(cardId, CardDetailCreateDetailsIframeParams.none(), requestOptions) - - /** - * Sensitive details for a Card include the primary account number, expiry, card verification - * code, and PIN. - */ - fun details(cardId: String): CompletableFuture = - details(cardId, CardDetailDetailsParams.none()) - - /** @see details */ - fun details( - cardId: String, - params: CardDetailDetailsParams = CardDetailDetailsParams.none(), - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture = - details(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see details */ - fun details( - cardId: String, - params: CardDetailDetailsParams = CardDetailDetailsParams.none(), - ): CompletableFuture = details(cardId, params, RequestOptions.none()) - - /** @see details */ - fun details( - params: CardDetailDetailsParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture - - /** @see details */ - fun details(params: CardDetailDetailsParams): CompletableFuture = - details(params, RequestOptions.none()) - - /** @see details */ - fun details(cardId: String, requestOptions: RequestOptions): CompletableFuture = - details(cardId, CardDetailDetailsParams.none(), requestOptions) - - /** - * A view of [CardDetailServiceAsync] that provides access to raw HTTP responses for each - * method. - */ - interface WithRawResponse { - - /** - * Returns a view of this service with the given option modifications applied. - * - * The original service is not modified. - */ - fun withOptions( - modifier: Consumer - ): CardDetailServiceAsync.WithRawResponse - - /** - * Returns a raw HTTP response for `patch /cards/{card_id}/details`, but is otherwise the - * same as [CardDetailServiceAsync.update]. - */ - fun update( - cardId: String, - params: CardDetailUpdateParams, - ): CompletableFuture> = - update(cardId, params, RequestOptions.none()) - - /** @see update */ - fun update( - cardId: String, - params: CardDetailUpdateParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture> = - update(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see update */ - fun update( - params: CardDetailUpdateParams - ): CompletableFuture> = update(params, RequestOptions.none()) - - /** @see update */ - fun update( - params: CardDetailUpdateParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture> - - /** - * Returns a raw HTTP response for `post /cards/{card_id}/create_details_iframe`, but is - * otherwise the same as [CardDetailServiceAsync.createDetailsIframe]. - */ - fun createDetailsIframe(cardId: String): CompletableFuture> = - createDetailsIframe(cardId, CardDetailCreateDetailsIframeParams.none()) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - cardId: String, - params: CardDetailCreateDetailsIframeParams = - CardDetailCreateDetailsIframeParams.none(), - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture> = - createDetailsIframe(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - cardId: String, - params: CardDetailCreateDetailsIframeParams = CardDetailCreateDetailsIframeParams.none(), - ): CompletableFuture> = - createDetailsIframe(cardId, params, RequestOptions.none()) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture> - - /** @see createDetailsIframe */ - fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams - ): CompletableFuture> = - createDetailsIframe(params, RequestOptions.none()) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - cardId: String, - requestOptions: RequestOptions, - ): CompletableFuture> = - createDetailsIframe(cardId, CardDetailCreateDetailsIframeParams.none(), requestOptions) - - /** - * Returns a raw HTTP response for `get /cards/{card_id}/details`, but is otherwise the same - * as [CardDetailServiceAsync.details]. - */ - fun details(cardId: String): CompletableFuture> = - details(cardId, CardDetailDetailsParams.none()) - - /** @see details */ - fun details( - cardId: String, - params: CardDetailDetailsParams = CardDetailDetailsParams.none(), - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture> = - details(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see details */ - fun details( - cardId: String, - params: CardDetailDetailsParams = CardDetailDetailsParams.none(), - ): CompletableFuture> = - details(cardId, params, RequestOptions.none()) - - /** @see details */ - fun details( - params: CardDetailDetailsParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CompletableFuture> - - /** @see details */ - fun details( - params: CardDetailDetailsParams - ): CompletableFuture> = details(params, RequestOptions.none()) - - /** @see details */ - fun details( - cardId: String, - requestOptions: RequestOptions, - ): CompletableFuture> = - details(cardId, CardDetailDetailsParams.none(), requestOptions) - } -} diff --git a/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardDetailServiceAsyncImpl.kt b/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardDetailServiceAsyncImpl.kt deleted file mode 100644 index 289aad6fc..000000000 --- a/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardDetailServiceAsyncImpl.kt +++ /dev/null @@ -1,175 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. - -package com.increase.api.services.async - -import com.increase.api.core.ClientOptions -import com.increase.api.core.RequestOptions -import com.increase.api.core.checkRequired -import com.increase.api.core.handlers.errorBodyHandler -import com.increase.api.core.handlers.errorHandler -import com.increase.api.core.handlers.jsonHandler -import com.increase.api.core.http.HttpMethod -import com.increase.api.core.http.HttpRequest -import com.increase.api.core.http.HttpResponse -import com.increase.api.core.http.HttpResponse.Handler -import com.increase.api.core.http.HttpResponseFor -import com.increase.api.core.http.json -import com.increase.api.core.http.parseable -import com.increase.api.core.prepareAsync -import com.increase.api.models.carddetails.CardDetailCreateDetailsIframeParams -import com.increase.api.models.carddetails.CardDetailDetailsParams -import com.increase.api.models.carddetails.CardDetailUpdateParams -import com.increase.api.models.carddetails.CardDetails -import com.increase.api.models.carddetails.CardIframeUrl -import java.util.concurrent.CompletableFuture -import java.util.function.Consumer -import kotlin.jvm.optionals.getOrNull - -class CardDetailServiceAsyncImpl internal constructor(private val clientOptions: ClientOptions) : - CardDetailServiceAsync { - - private val withRawResponse: CardDetailServiceAsync.WithRawResponse by lazy { - WithRawResponseImpl(clientOptions) - } - - override fun withRawResponse(): CardDetailServiceAsync.WithRawResponse = withRawResponse - - override fun withOptions(modifier: Consumer): CardDetailServiceAsync = - CardDetailServiceAsyncImpl(clientOptions.toBuilder().apply(modifier::accept).build()) - - override fun update( - params: CardDetailUpdateParams, - requestOptions: RequestOptions, - ): CompletableFuture = - // patch /cards/{card_id}/details - withRawResponse().update(params, requestOptions).thenApply { it.parse() } - - override fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams, - requestOptions: RequestOptions, - ): CompletableFuture = - // post /cards/{card_id}/create_details_iframe - withRawResponse().createDetailsIframe(params, requestOptions).thenApply { it.parse() } - - override fun details( - params: CardDetailDetailsParams, - requestOptions: RequestOptions, - ): CompletableFuture = - // get /cards/{card_id}/details - withRawResponse().details(params, requestOptions).thenApply { it.parse() } - - class WithRawResponseImpl internal constructor(private val clientOptions: ClientOptions) : - CardDetailServiceAsync.WithRawResponse { - - private val errorHandler: Handler = - errorHandler(errorBodyHandler(clientOptions.jsonMapper)) - - override fun withOptions( - modifier: Consumer - ): CardDetailServiceAsync.WithRawResponse = - CardDetailServiceAsyncImpl.WithRawResponseImpl( - clientOptions.toBuilder().apply(modifier::accept).build() - ) - - private val updateHandler: Handler = - jsonHandler(clientOptions.jsonMapper) - - override fun update( - params: CardDetailUpdateParams, - requestOptions: RequestOptions, - ): CompletableFuture> { - // We check here instead of in the params builder because this can be specified - // positionally or in the params class. - checkRequired("cardId", params.cardId().getOrNull()) - val request = - HttpRequest.builder() - .method(HttpMethod.PATCH) - .baseUrl(clientOptions.baseUrl()) - .addPathSegments("cards", params._pathParam(0), "details") - .body(json(clientOptions.jsonMapper, params._body())) - .build() - .prepareAsync(clientOptions, params) - val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) - return request - .thenComposeAsync { clientOptions.httpClient.executeAsync(it, requestOptions) } - .thenApply { response -> - errorHandler.handle(response).parseable { - response - .use { updateHandler.handle(it) } - .also { - if (requestOptions.responseValidation!!) { - it.validate() - } - } - } - } - } - - private val createDetailsIframeHandler: Handler = - jsonHandler(clientOptions.jsonMapper) - - override fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams, - requestOptions: RequestOptions, - ): CompletableFuture> { - // We check here instead of in the params builder because this can be specified - // positionally or in the params class. - checkRequired("cardId", params.cardId().getOrNull()) - val request = - HttpRequest.builder() - .method(HttpMethod.POST) - .baseUrl(clientOptions.baseUrl()) - .addPathSegments("cards", params._pathParam(0), "create_details_iframe") - .body(json(clientOptions.jsonMapper, params._body())) - .build() - .prepareAsync(clientOptions, params) - val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) - return request - .thenComposeAsync { clientOptions.httpClient.executeAsync(it, requestOptions) } - .thenApply { response -> - errorHandler.handle(response).parseable { - response - .use { createDetailsIframeHandler.handle(it) } - .also { - if (requestOptions.responseValidation!!) { - it.validate() - } - } - } - } - } - - private val detailsHandler: Handler = - jsonHandler(clientOptions.jsonMapper) - - override fun details( - params: CardDetailDetailsParams, - requestOptions: RequestOptions, - ): CompletableFuture> { - // We check here instead of in the params builder because this can be specified - // positionally or in the params class. - checkRequired("cardId", params.cardId().getOrNull()) - val request = - HttpRequest.builder() - .method(HttpMethod.GET) - .baseUrl(clientOptions.baseUrl()) - .addPathSegments("cards", params._pathParam(0), "details") - .build() - .prepareAsync(clientOptions, params) - val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) - return request - .thenComposeAsync { clientOptions.httpClient.executeAsync(it, requestOptions) } - .thenApply { response -> - errorHandler.handle(response).parseable { - response - .use { detailsHandler.handle(it) } - .also { - if (requestOptions.responseValidation!!) { - it.validate() - } - } - } - } - } - } -} diff --git a/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardServiceAsync.kt b/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardServiceAsync.kt index ab866c160..61e3df8f8 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardServiceAsync.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardServiceAsync.kt @@ -6,11 +6,16 @@ import com.increase.api.core.ClientOptions import com.increase.api.core.RequestOptions import com.increase.api.core.http.HttpResponseFor import com.increase.api.models.cards.Card +import com.increase.api.models.cards.CardCreateDetailsIframeParams import com.increase.api.models.cards.CardCreateParams +import com.increase.api.models.cards.CardDetails +import com.increase.api.models.cards.CardDetailsParams +import com.increase.api.models.cards.CardIframeUrl import com.increase.api.models.cards.CardListPageAsync import com.increase.api.models.cards.CardListParams import com.increase.api.models.cards.CardRetrieveParams import com.increase.api.models.cards.CardUpdateParams +import com.increase.api.models.cards.CardUpdatePinParams import java.util.concurrent.CompletableFuture import java.util.function.Consumer @@ -116,6 +121,102 @@ interface CardServiceAsync { fun list(requestOptions: RequestOptions): CompletableFuture = list(CardListParams.none(), requestOptions) + /** + * Create an iframe URL for a Card to display the card details. More details about styling and + * usage can be found in the [documentation](/documentation/embedded-card-component). + */ + fun createDetailsIframe(cardId: String): CompletableFuture = + createDetailsIframe(cardId, CardCreateDetailsIframeParams.none()) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + cardId: String, + params: CardCreateDetailsIframeParams = CardCreateDetailsIframeParams.none(), + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture = + createDetailsIframe(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + cardId: String, + params: CardCreateDetailsIframeParams = CardCreateDetailsIframeParams.none(), + ): CompletableFuture = createDetailsIframe(cardId, params, RequestOptions.none()) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + params: CardCreateDetailsIframeParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture + + /** @see createDetailsIframe */ + fun createDetailsIframe( + params: CardCreateDetailsIframeParams + ): CompletableFuture = createDetailsIframe(params, RequestOptions.none()) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + cardId: String, + requestOptions: RequestOptions, + ): CompletableFuture = + createDetailsIframe(cardId, CardCreateDetailsIframeParams.none(), requestOptions) + + /** + * Sensitive details for a Card include the primary account number, expiry, card verification + * code, and PIN. + */ + fun details(cardId: String): CompletableFuture = + details(cardId, CardDetailsParams.none()) + + /** @see details */ + fun details( + cardId: String, + params: CardDetailsParams = CardDetailsParams.none(), + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture = + details(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see details */ + fun details( + cardId: String, + params: CardDetailsParams = CardDetailsParams.none(), + ): CompletableFuture = details(cardId, params, RequestOptions.none()) + + /** @see details */ + fun details( + params: CardDetailsParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture + + /** @see details */ + fun details(params: CardDetailsParams): CompletableFuture = + details(params, RequestOptions.none()) + + /** @see details */ + fun details(cardId: String, requestOptions: RequestOptions): CompletableFuture = + details(cardId, CardDetailsParams.none(), requestOptions) + + /** Update a Card's PIN */ + fun updatePin(cardId: String, params: CardUpdatePinParams): CompletableFuture = + updatePin(cardId, params, RequestOptions.none()) + + /** @see updatePin */ + fun updatePin( + cardId: String, + params: CardUpdatePinParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture = + updatePin(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see updatePin */ + fun updatePin(params: CardUpdatePinParams): CompletableFuture = + updatePin(params, RequestOptions.none()) + + /** @see updatePin */ + fun updatePin( + params: CardUpdatePinParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture + /** A view of [CardServiceAsync] that provides access to raw HTTP responses for each method. */ interface WithRawResponse { @@ -240,5 +341,115 @@ interface CardServiceAsync { requestOptions: RequestOptions ): CompletableFuture> = list(CardListParams.none(), requestOptions) + + /** + * Returns a raw HTTP response for `post /cards/{card_id}/create_details_iframe`, but is + * otherwise the same as [CardServiceAsync.createDetailsIframe]. + */ + fun createDetailsIframe(cardId: String): CompletableFuture> = + createDetailsIframe(cardId, CardCreateDetailsIframeParams.none()) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + cardId: String, + params: CardCreateDetailsIframeParams = CardCreateDetailsIframeParams.none(), + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture> = + createDetailsIframe(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + cardId: String, + params: CardCreateDetailsIframeParams = CardCreateDetailsIframeParams.none(), + ): CompletableFuture> = + createDetailsIframe(cardId, params, RequestOptions.none()) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + params: CardCreateDetailsIframeParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture> + + /** @see createDetailsIframe */ + fun createDetailsIframe( + params: CardCreateDetailsIframeParams + ): CompletableFuture> = + createDetailsIframe(params, RequestOptions.none()) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + cardId: String, + requestOptions: RequestOptions, + ): CompletableFuture> = + createDetailsIframe(cardId, CardCreateDetailsIframeParams.none(), requestOptions) + + /** + * Returns a raw HTTP response for `get /cards/{card_id}/details`, but is otherwise the same + * as [CardServiceAsync.details]. + */ + fun details(cardId: String): CompletableFuture> = + details(cardId, CardDetailsParams.none()) + + /** @see details */ + fun details( + cardId: String, + params: CardDetailsParams = CardDetailsParams.none(), + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture> = + details(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see details */ + fun details( + cardId: String, + params: CardDetailsParams = CardDetailsParams.none(), + ): CompletableFuture> = + details(cardId, params, RequestOptions.none()) + + /** @see details */ + fun details( + params: CardDetailsParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture> + + /** @see details */ + fun details(params: CardDetailsParams): CompletableFuture> = + details(params, RequestOptions.none()) + + /** @see details */ + fun details( + cardId: String, + requestOptions: RequestOptions, + ): CompletableFuture> = + details(cardId, CardDetailsParams.none(), requestOptions) + + /** + * Returns a raw HTTP response for `post /cards/{card_id}/update_pin`, but is otherwise the + * same as [CardServiceAsync.updatePin]. + */ + fun updatePin( + cardId: String, + params: CardUpdatePinParams, + ): CompletableFuture> = + updatePin(cardId, params, RequestOptions.none()) + + /** @see updatePin */ + fun updatePin( + cardId: String, + params: CardUpdatePinParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture> = + updatePin(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see updatePin */ + fun updatePin( + params: CardUpdatePinParams + ): CompletableFuture> = + updatePin(params, RequestOptions.none()) + + /** @see updatePin */ + fun updatePin( + params: CardUpdatePinParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CompletableFuture> } } diff --git a/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardServiceAsyncImpl.kt b/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardServiceAsyncImpl.kt index 89375e46e..4c3d94703 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardServiceAsyncImpl.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/services/async/CardServiceAsyncImpl.kt @@ -17,12 +17,17 @@ import com.increase.api.core.http.json import com.increase.api.core.http.parseable import com.increase.api.core.prepareAsync import com.increase.api.models.cards.Card +import com.increase.api.models.cards.CardCreateDetailsIframeParams import com.increase.api.models.cards.CardCreateParams +import com.increase.api.models.cards.CardDetails +import com.increase.api.models.cards.CardDetailsParams +import com.increase.api.models.cards.CardIframeUrl import com.increase.api.models.cards.CardListPageAsync import com.increase.api.models.cards.CardListPageResponse import com.increase.api.models.cards.CardListParams import com.increase.api.models.cards.CardRetrieveParams import com.increase.api.models.cards.CardUpdateParams +import com.increase.api.models.cards.CardUpdatePinParams import java.util.concurrent.CompletableFuture import java.util.function.Consumer import kotlin.jvm.optionals.getOrNull @@ -67,6 +72,27 @@ class CardServiceAsyncImpl internal constructor(private val clientOptions: Clien // get /cards withRawResponse().list(params, requestOptions).thenApply { it.parse() } + override fun createDetailsIframe( + params: CardCreateDetailsIframeParams, + requestOptions: RequestOptions, + ): CompletableFuture = + // post /cards/{card_id}/create_details_iframe + withRawResponse().createDetailsIframe(params, requestOptions).thenApply { it.parse() } + + override fun details( + params: CardDetailsParams, + requestOptions: RequestOptions, + ): CompletableFuture = + // get /cards/{card_id}/details + withRawResponse().details(params, requestOptions).thenApply { it.parse() } + + override fun updatePin( + params: CardUpdatePinParams, + requestOptions: RequestOptions, + ): CompletableFuture = + // post /cards/{card_id}/update_pin + withRawResponse().updatePin(params, requestOptions).thenApply { it.parse() } + class WithRawResponseImpl internal constructor(private val clientOptions: ClientOptions) : CardServiceAsync.WithRawResponse { @@ -212,5 +238,106 @@ class CardServiceAsyncImpl internal constructor(private val clientOptions: Clien } } } + + private val createDetailsIframeHandler: Handler = + jsonHandler(clientOptions.jsonMapper) + + override fun createDetailsIframe( + params: CardCreateDetailsIframeParams, + requestOptions: RequestOptions, + ): CompletableFuture> { + // We check here instead of in the params builder because this can be specified + // positionally or in the params class. + checkRequired("cardId", params.cardId().getOrNull()) + val request = + HttpRequest.builder() + .method(HttpMethod.POST) + .baseUrl(clientOptions.baseUrl()) + .addPathSegments("cards", params._pathParam(0), "create_details_iframe") + .body(json(clientOptions.jsonMapper, params._body())) + .build() + .prepareAsync(clientOptions, params) + val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) + return request + .thenComposeAsync { clientOptions.httpClient.executeAsync(it, requestOptions) } + .thenApply { response -> + errorHandler.handle(response).parseable { + response + .use { createDetailsIframeHandler.handle(it) } + .also { + if (requestOptions.responseValidation!!) { + it.validate() + } + } + } + } + } + + private val detailsHandler: Handler = + jsonHandler(clientOptions.jsonMapper) + + override fun details( + params: CardDetailsParams, + requestOptions: RequestOptions, + ): CompletableFuture> { + // We check here instead of in the params builder because this can be specified + // positionally or in the params class. + checkRequired("cardId", params.cardId().getOrNull()) + val request = + HttpRequest.builder() + .method(HttpMethod.GET) + .baseUrl(clientOptions.baseUrl()) + .addPathSegments("cards", params._pathParam(0), "details") + .build() + .prepareAsync(clientOptions, params) + val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) + return request + .thenComposeAsync { clientOptions.httpClient.executeAsync(it, requestOptions) } + .thenApply { response -> + errorHandler.handle(response).parseable { + response + .use { detailsHandler.handle(it) } + .also { + if (requestOptions.responseValidation!!) { + it.validate() + } + } + } + } + } + + private val updatePinHandler: Handler = + jsonHandler(clientOptions.jsonMapper) + + override fun updatePin( + params: CardUpdatePinParams, + requestOptions: RequestOptions, + ): CompletableFuture> { + // We check here instead of in the params builder because this can be specified + // positionally or in the params class. + checkRequired("cardId", params.cardId().getOrNull()) + val request = + HttpRequest.builder() + .method(HttpMethod.POST) + .baseUrl(clientOptions.baseUrl()) + .addPathSegments("cards", params._pathParam(0), "update_pin") + .body(json(clientOptions.jsonMapper, params._body())) + .build() + .prepareAsync(clientOptions, params) + val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) + return request + .thenComposeAsync { clientOptions.httpClient.executeAsync(it, requestOptions) } + .thenApply { response -> + errorHandler.handle(response).parseable { + response + .use { updatePinHandler.handle(it) } + .also { + if (requestOptions.responseValidation!!) { + it.validate() + } + } + } + } + } } } diff --git a/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardDetailService.kt b/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardDetailService.kt deleted file mode 100644 index c5357578c..000000000 --- a/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardDetailService.kt +++ /dev/null @@ -1,247 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. - -package com.increase.api.services.blocking - -import com.google.errorprone.annotations.MustBeClosed -import com.increase.api.core.ClientOptions -import com.increase.api.core.RequestOptions -import com.increase.api.core.http.HttpResponseFor -import com.increase.api.models.carddetails.CardDetailCreateDetailsIframeParams -import com.increase.api.models.carddetails.CardDetailDetailsParams -import com.increase.api.models.carddetails.CardDetailUpdateParams -import com.increase.api.models.carddetails.CardDetails -import com.increase.api.models.carddetails.CardIframeUrl -import java.util.function.Consumer - -interface CardDetailService { - - /** - * Returns a view of this service that provides access to raw HTTP responses for each method. - */ - fun withRawResponse(): WithRawResponse - - /** - * Returns a view of this service with the given option modifications applied. - * - * The original service is not modified. - */ - fun withOptions(modifier: Consumer): CardDetailService - - /** Update a Card's PIN */ - fun update(cardId: String, params: CardDetailUpdateParams): CardDetails = - update(cardId, params, RequestOptions.none()) - - /** @see update */ - fun update( - cardId: String, - params: CardDetailUpdateParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CardDetails = update(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see update */ - fun update(params: CardDetailUpdateParams): CardDetails = update(params, RequestOptions.none()) - - /** @see update */ - fun update( - params: CardDetailUpdateParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CardDetails - - /** - * Create an iframe URL for a Card to display the card details. More details about styling and - * usage can be found in the [documentation](/documentation/embedded-card-component). - */ - fun createDetailsIframe(cardId: String): CardIframeUrl = - createDetailsIframe(cardId, CardDetailCreateDetailsIframeParams.none()) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - cardId: String, - params: CardDetailCreateDetailsIframeParams = CardDetailCreateDetailsIframeParams.none(), - requestOptions: RequestOptions = RequestOptions.none(), - ): CardIframeUrl = - createDetailsIframe(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - cardId: String, - params: CardDetailCreateDetailsIframeParams = CardDetailCreateDetailsIframeParams.none(), - ): CardIframeUrl = createDetailsIframe(cardId, params, RequestOptions.none()) - - /** @see createDetailsIframe */ - fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CardIframeUrl - - /** @see createDetailsIframe */ - fun createDetailsIframe(params: CardDetailCreateDetailsIframeParams): CardIframeUrl = - createDetailsIframe(params, RequestOptions.none()) - - /** @see createDetailsIframe */ - fun createDetailsIframe(cardId: String, requestOptions: RequestOptions): CardIframeUrl = - createDetailsIframe(cardId, CardDetailCreateDetailsIframeParams.none(), requestOptions) - - /** - * Sensitive details for a Card include the primary account number, expiry, card verification - * code, and PIN. - */ - fun details(cardId: String): CardDetails = details(cardId, CardDetailDetailsParams.none()) - - /** @see details */ - fun details( - cardId: String, - params: CardDetailDetailsParams = CardDetailDetailsParams.none(), - requestOptions: RequestOptions = RequestOptions.none(), - ): CardDetails = details(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see details */ - fun details( - cardId: String, - params: CardDetailDetailsParams = CardDetailDetailsParams.none(), - ): CardDetails = details(cardId, params, RequestOptions.none()) - - /** @see details */ - fun details( - params: CardDetailDetailsParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): CardDetails - - /** @see details */ - fun details(params: CardDetailDetailsParams): CardDetails = - details(params, RequestOptions.none()) - - /** @see details */ - fun details(cardId: String, requestOptions: RequestOptions): CardDetails = - details(cardId, CardDetailDetailsParams.none(), requestOptions) - - /** A view of [CardDetailService] that provides access to raw HTTP responses for each method. */ - interface WithRawResponse { - - /** - * Returns a view of this service with the given option modifications applied. - * - * The original service is not modified. - */ - fun withOptions( - modifier: Consumer - ): CardDetailService.WithRawResponse - - /** - * Returns a raw HTTP response for `patch /cards/{card_id}/details`, but is otherwise the - * same as [CardDetailService.update]. - */ - @MustBeClosed - fun update(cardId: String, params: CardDetailUpdateParams): HttpResponseFor = - update(cardId, params, RequestOptions.none()) - - /** @see update */ - @MustBeClosed - fun update( - cardId: String, - params: CardDetailUpdateParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): HttpResponseFor = - update(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see update */ - @MustBeClosed - fun update(params: CardDetailUpdateParams): HttpResponseFor = - update(params, RequestOptions.none()) - - /** @see update */ - @MustBeClosed - fun update( - params: CardDetailUpdateParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): HttpResponseFor - - /** - * Returns a raw HTTP response for `post /cards/{card_id}/create_details_iframe`, but is - * otherwise the same as [CardDetailService.createDetailsIframe]. - */ - @MustBeClosed - fun createDetailsIframe(cardId: String): HttpResponseFor = - createDetailsIframe(cardId, CardDetailCreateDetailsIframeParams.none()) - - /** @see createDetailsIframe */ - @MustBeClosed - fun createDetailsIframe( - cardId: String, - params: CardDetailCreateDetailsIframeParams = - CardDetailCreateDetailsIframeParams.none(), - requestOptions: RequestOptions = RequestOptions.none(), - ): HttpResponseFor = - createDetailsIframe(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see createDetailsIframe */ - @MustBeClosed - fun createDetailsIframe( - cardId: String, - params: CardDetailCreateDetailsIframeParams = CardDetailCreateDetailsIframeParams.none(), - ): HttpResponseFor = - createDetailsIframe(cardId, params, RequestOptions.none()) - - /** @see createDetailsIframe */ - @MustBeClosed - fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): HttpResponseFor - - /** @see createDetailsIframe */ - @MustBeClosed - fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams - ): HttpResponseFor = createDetailsIframe(params, RequestOptions.none()) - - /** @see createDetailsIframe */ - @MustBeClosed - fun createDetailsIframe( - cardId: String, - requestOptions: RequestOptions, - ): HttpResponseFor = - createDetailsIframe(cardId, CardDetailCreateDetailsIframeParams.none(), requestOptions) - - /** - * Returns a raw HTTP response for `get /cards/{card_id}/details`, but is otherwise the same - * as [CardDetailService.details]. - */ - @MustBeClosed - fun details(cardId: String): HttpResponseFor = - details(cardId, CardDetailDetailsParams.none()) - - /** @see details */ - @MustBeClosed - fun details( - cardId: String, - params: CardDetailDetailsParams = CardDetailDetailsParams.none(), - requestOptions: RequestOptions = RequestOptions.none(), - ): HttpResponseFor = - details(params.toBuilder().cardId(cardId).build(), requestOptions) - - /** @see details */ - @MustBeClosed - fun details( - cardId: String, - params: CardDetailDetailsParams = CardDetailDetailsParams.none(), - ): HttpResponseFor = details(cardId, params, RequestOptions.none()) - - /** @see details */ - @MustBeClosed - fun details( - params: CardDetailDetailsParams, - requestOptions: RequestOptions = RequestOptions.none(), - ): HttpResponseFor - - /** @see details */ - @MustBeClosed - fun details(params: CardDetailDetailsParams): HttpResponseFor = - details(params, RequestOptions.none()) - - /** @see details */ - @MustBeClosed - fun details(cardId: String, requestOptions: RequestOptions): HttpResponseFor = - details(cardId, CardDetailDetailsParams.none(), requestOptions) - } -} diff --git a/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardDetailServiceImpl.kt b/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardDetailServiceImpl.kt deleted file mode 100644 index a10c3c194..000000000 --- a/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardDetailServiceImpl.kt +++ /dev/null @@ -1,165 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. - -package com.increase.api.services.blocking - -import com.increase.api.core.ClientOptions -import com.increase.api.core.RequestOptions -import com.increase.api.core.checkRequired -import com.increase.api.core.handlers.errorBodyHandler -import com.increase.api.core.handlers.errorHandler -import com.increase.api.core.handlers.jsonHandler -import com.increase.api.core.http.HttpMethod -import com.increase.api.core.http.HttpRequest -import com.increase.api.core.http.HttpResponse -import com.increase.api.core.http.HttpResponse.Handler -import com.increase.api.core.http.HttpResponseFor -import com.increase.api.core.http.json -import com.increase.api.core.http.parseable -import com.increase.api.core.prepare -import com.increase.api.models.carddetails.CardDetailCreateDetailsIframeParams -import com.increase.api.models.carddetails.CardDetailDetailsParams -import com.increase.api.models.carddetails.CardDetailUpdateParams -import com.increase.api.models.carddetails.CardDetails -import com.increase.api.models.carddetails.CardIframeUrl -import java.util.function.Consumer -import kotlin.jvm.optionals.getOrNull - -class CardDetailServiceImpl internal constructor(private val clientOptions: ClientOptions) : - CardDetailService { - - private val withRawResponse: CardDetailService.WithRawResponse by lazy { - WithRawResponseImpl(clientOptions) - } - - override fun withRawResponse(): CardDetailService.WithRawResponse = withRawResponse - - override fun withOptions(modifier: Consumer): CardDetailService = - CardDetailServiceImpl(clientOptions.toBuilder().apply(modifier::accept).build()) - - override fun update( - params: CardDetailUpdateParams, - requestOptions: RequestOptions, - ): CardDetails = - // patch /cards/{card_id}/details - withRawResponse().update(params, requestOptions).parse() - - override fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams, - requestOptions: RequestOptions, - ): CardIframeUrl = - // post /cards/{card_id}/create_details_iframe - withRawResponse().createDetailsIframe(params, requestOptions).parse() - - override fun details( - params: CardDetailDetailsParams, - requestOptions: RequestOptions, - ): CardDetails = - // get /cards/{card_id}/details - withRawResponse().details(params, requestOptions).parse() - - class WithRawResponseImpl internal constructor(private val clientOptions: ClientOptions) : - CardDetailService.WithRawResponse { - - private val errorHandler: Handler = - errorHandler(errorBodyHandler(clientOptions.jsonMapper)) - - override fun withOptions( - modifier: Consumer - ): CardDetailService.WithRawResponse = - CardDetailServiceImpl.WithRawResponseImpl( - clientOptions.toBuilder().apply(modifier::accept).build() - ) - - private val updateHandler: Handler = - jsonHandler(clientOptions.jsonMapper) - - override fun update( - params: CardDetailUpdateParams, - requestOptions: RequestOptions, - ): HttpResponseFor { - // We check here instead of in the params builder because this can be specified - // positionally or in the params class. - checkRequired("cardId", params.cardId().getOrNull()) - val request = - HttpRequest.builder() - .method(HttpMethod.PATCH) - .baseUrl(clientOptions.baseUrl()) - .addPathSegments("cards", params._pathParam(0), "details") - .body(json(clientOptions.jsonMapper, params._body())) - .build() - .prepare(clientOptions, params) - val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) - val response = clientOptions.httpClient.execute(request, requestOptions) - return errorHandler.handle(response).parseable { - response - .use { updateHandler.handle(it) } - .also { - if (requestOptions.responseValidation!!) { - it.validate() - } - } - } - } - - private val createDetailsIframeHandler: Handler = - jsonHandler(clientOptions.jsonMapper) - - override fun createDetailsIframe( - params: CardDetailCreateDetailsIframeParams, - requestOptions: RequestOptions, - ): HttpResponseFor { - // We check here instead of in the params builder because this can be specified - // positionally or in the params class. - checkRequired("cardId", params.cardId().getOrNull()) - val request = - HttpRequest.builder() - .method(HttpMethod.POST) - .baseUrl(clientOptions.baseUrl()) - .addPathSegments("cards", params._pathParam(0), "create_details_iframe") - .body(json(clientOptions.jsonMapper, params._body())) - .build() - .prepare(clientOptions, params) - val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) - val response = clientOptions.httpClient.execute(request, requestOptions) - return errorHandler.handle(response).parseable { - response - .use { createDetailsIframeHandler.handle(it) } - .also { - if (requestOptions.responseValidation!!) { - it.validate() - } - } - } - } - - private val detailsHandler: Handler = - jsonHandler(clientOptions.jsonMapper) - - override fun details( - params: CardDetailDetailsParams, - requestOptions: RequestOptions, - ): HttpResponseFor { - // We check here instead of in the params builder because this can be specified - // positionally or in the params class. - checkRequired("cardId", params.cardId().getOrNull()) - val request = - HttpRequest.builder() - .method(HttpMethod.GET) - .baseUrl(clientOptions.baseUrl()) - .addPathSegments("cards", params._pathParam(0), "details") - .build() - .prepare(clientOptions, params) - val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) - val response = clientOptions.httpClient.execute(request, requestOptions) - return errorHandler.handle(response).parseable { - response - .use { detailsHandler.handle(it) } - .also { - if (requestOptions.responseValidation!!) { - it.validate() - } - } - } - } - } -} diff --git a/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardService.kt b/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardService.kt index 3087e548e..501e3d077 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardService.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardService.kt @@ -7,11 +7,16 @@ import com.increase.api.core.ClientOptions import com.increase.api.core.RequestOptions import com.increase.api.core.http.HttpResponseFor import com.increase.api.models.cards.Card +import com.increase.api.models.cards.CardCreateDetailsIframeParams import com.increase.api.models.cards.CardCreateParams +import com.increase.api.models.cards.CardDetails +import com.increase.api.models.cards.CardDetailsParams +import com.increase.api.models.cards.CardIframeUrl import com.increase.api.models.cards.CardListPage import com.increase.api.models.cards.CardListParams import com.increase.api.models.cards.CardRetrieveParams import com.increase.api.models.cards.CardUpdateParams +import com.increase.api.models.cards.CardUpdatePinParams import java.util.function.Consumer interface CardService { @@ -108,6 +113,92 @@ interface CardService { fun list(requestOptions: RequestOptions): CardListPage = list(CardListParams.none(), requestOptions) + /** + * Create an iframe URL for a Card to display the card details. More details about styling and + * usage can be found in the [documentation](/documentation/embedded-card-component). + */ + fun createDetailsIframe(cardId: String): CardIframeUrl = + createDetailsIframe(cardId, CardCreateDetailsIframeParams.none()) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + cardId: String, + params: CardCreateDetailsIframeParams = CardCreateDetailsIframeParams.none(), + requestOptions: RequestOptions = RequestOptions.none(), + ): CardIframeUrl = + createDetailsIframe(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + cardId: String, + params: CardCreateDetailsIframeParams = CardCreateDetailsIframeParams.none(), + ): CardIframeUrl = createDetailsIframe(cardId, params, RequestOptions.none()) + + /** @see createDetailsIframe */ + fun createDetailsIframe( + params: CardCreateDetailsIframeParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CardIframeUrl + + /** @see createDetailsIframe */ + fun createDetailsIframe(params: CardCreateDetailsIframeParams): CardIframeUrl = + createDetailsIframe(params, RequestOptions.none()) + + /** @see createDetailsIframe */ + fun createDetailsIframe(cardId: String, requestOptions: RequestOptions): CardIframeUrl = + createDetailsIframe(cardId, CardCreateDetailsIframeParams.none(), requestOptions) + + /** + * Sensitive details for a Card include the primary account number, expiry, card verification + * code, and PIN. + */ + fun details(cardId: String): CardDetails = details(cardId, CardDetailsParams.none()) + + /** @see details */ + fun details( + cardId: String, + params: CardDetailsParams = CardDetailsParams.none(), + requestOptions: RequestOptions = RequestOptions.none(), + ): CardDetails = details(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see details */ + fun details(cardId: String, params: CardDetailsParams = CardDetailsParams.none()): CardDetails = + details(cardId, params, RequestOptions.none()) + + /** @see details */ + fun details( + params: CardDetailsParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CardDetails + + /** @see details */ + fun details(params: CardDetailsParams): CardDetails = details(params, RequestOptions.none()) + + /** @see details */ + fun details(cardId: String, requestOptions: RequestOptions): CardDetails = + details(cardId, CardDetailsParams.none(), requestOptions) + + /** Update a Card's PIN */ + fun updatePin(cardId: String, params: CardUpdatePinParams): CardDetails = + updatePin(cardId, params, RequestOptions.none()) + + /** @see updatePin */ + fun updatePin( + cardId: String, + params: CardUpdatePinParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CardDetails = updatePin(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see updatePin */ + fun updatePin(params: CardUpdatePinParams): CardDetails = + updatePin(params, RequestOptions.none()) + + /** @see updatePin */ + fun updatePin( + params: CardUpdatePinParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): CardDetails + /** A view of [CardService] that provides access to raw HTTP responses for each method. */ interface WithRawResponse { @@ -235,5 +326,121 @@ interface CardService { @MustBeClosed fun list(requestOptions: RequestOptions): HttpResponseFor = list(CardListParams.none(), requestOptions) + + /** + * Returns a raw HTTP response for `post /cards/{card_id}/create_details_iframe`, but is + * otherwise the same as [CardService.createDetailsIframe]. + */ + @MustBeClosed + fun createDetailsIframe(cardId: String): HttpResponseFor = + createDetailsIframe(cardId, CardCreateDetailsIframeParams.none()) + + /** @see createDetailsIframe */ + @MustBeClosed + fun createDetailsIframe( + cardId: String, + params: CardCreateDetailsIframeParams = CardCreateDetailsIframeParams.none(), + requestOptions: RequestOptions = RequestOptions.none(), + ): HttpResponseFor = + createDetailsIframe(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see createDetailsIframe */ + @MustBeClosed + fun createDetailsIframe( + cardId: String, + params: CardCreateDetailsIframeParams = CardCreateDetailsIframeParams.none(), + ): HttpResponseFor = + createDetailsIframe(cardId, params, RequestOptions.none()) + + /** @see createDetailsIframe */ + @MustBeClosed + fun createDetailsIframe( + params: CardCreateDetailsIframeParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): HttpResponseFor + + /** @see createDetailsIframe */ + @MustBeClosed + fun createDetailsIframe( + params: CardCreateDetailsIframeParams + ): HttpResponseFor = createDetailsIframe(params, RequestOptions.none()) + + /** @see createDetailsIframe */ + @MustBeClosed + fun createDetailsIframe( + cardId: String, + requestOptions: RequestOptions, + ): HttpResponseFor = + createDetailsIframe(cardId, CardCreateDetailsIframeParams.none(), requestOptions) + + /** + * Returns a raw HTTP response for `get /cards/{card_id}/details`, but is otherwise the same + * as [CardService.details]. + */ + @MustBeClosed + fun details(cardId: String): HttpResponseFor = + details(cardId, CardDetailsParams.none()) + + /** @see details */ + @MustBeClosed + fun details( + cardId: String, + params: CardDetailsParams = CardDetailsParams.none(), + requestOptions: RequestOptions = RequestOptions.none(), + ): HttpResponseFor = + details(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see details */ + @MustBeClosed + fun details( + cardId: String, + params: CardDetailsParams = CardDetailsParams.none(), + ): HttpResponseFor = details(cardId, params, RequestOptions.none()) + + /** @see details */ + @MustBeClosed + fun details( + params: CardDetailsParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): HttpResponseFor + + /** @see details */ + @MustBeClosed + fun details(params: CardDetailsParams): HttpResponseFor = + details(params, RequestOptions.none()) + + /** @see details */ + @MustBeClosed + fun details(cardId: String, requestOptions: RequestOptions): HttpResponseFor = + details(cardId, CardDetailsParams.none(), requestOptions) + + /** + * Returns a raw HTTP response for `post /cards/{card_id}/update_pin`, but is otherwise the + * same as [CardService.updatePin]. + */ + @MustBeClosed + fun updatePin(cardId: String, params: CardUpdatePinParams): HttpResponseFor = + updatePin(cardId, params, RequestOptions.none()) + + /** @see updatePin */ + @MustBeClosed + fun updatePin( + cardId: String, + params: CardUpdatePinParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): HttpResponseFor = + updatePin(params.toBuilder().cardId(cardId).build(), requestOptions) + + /** @see updatePin */ + @MustBeClosed + fun updatePin(params: CardUpdatePinParams): HttpResponseFor = + updatePin(params, RequestOptions.none()) + + /** @see updatePin */ + @MustBeClosed + fun updatePin( + params: CardUpdatePinParams, + requestOptions: RequestOptions = RequestOptions.none(), + ): HttpResponseFor } } diff --git a/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardServiceImpl.kt b/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardServiceImpl.kt index e8b35f2da..23c39914f 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardServiceImpl.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/services/blocking/CardServiceImpl.kt @@ -17,12 +17,17 @@ import com.increase.api.core.http.json import com.increase.api.core.http.parseable import com.increase.api.core.prepare import com.increase.api.models.cards.Card +import com.increase.api.models.cards.CardCreateDetailsIframeParams import com.increase.api.models.cards.CardCreateParams +import com.increase.api.models.cards.CardDetails +import com.increase.api.models.cards.CardDetailsParams +import com.increase.api.models.cards.CardIframeUrl import com.increase.api.models.cards.CardListPage import com.increase.api.models.cards.CardListPageResponse import com.increase.api.models.cards.CardListParams import com.increase.api.models.cards.CardRetrieveParams import com.increase.api.models.cards.CardUpdateParams +import com.increase.api.models.cards.CardUpdatePinParams import java.util.function.Consumer import kotlin.jvm.optionals.getOrNull @@ -53,6 +58,24 @@ class CardServiceImpl internal constructor(private val clientOptions: ClientOpti // get /cards withRawResponse().list(params, requestOptions).parse() + override fun createDetailsIframe( + params: CardCreateDetailsIframeParams, + requestOptions: RequestOptions, + ): CardIframeUrl = + // post /cards/{card_id}/create_details_iframe + withRawResponse().createDetailsIframe(params, requestOptions).parse() + + override fun details(params: CardDetailsParams, requestOptions: RequestOptions): CardDetails = + // get /cards/{card_id}/details + withRawResponse().details(params, requestOptions).parse() + + override fun updatePin( + params: CardUpdatePinParams, + requestOptions: RequestOptions, + ): CardDetails = + // post /cards/{card_id}/update_pin + withRawResponse().updatePin(params, requestOptions).parse() + class WithRawResponseImpl internal constructor(private val clientOptions: ClientOptions) : CardService.WithRawResponse { @@ -185,5 +208,97 @@ class CardServiceImpl internal constructor(private val clientOptions: ClientOpti } } } + + private val createDetailsIframeHandler: Handler = + jsonHandler(clientOptions.jsonMapper) + + override fun createDetailsIframe( + params: CardCreateDetailsIframeParams, + requestOptions: RequestOptions, + ): HttpResponseFor { + // We check here instead of in the params builder because this can be specified + // positionally or in the params class. + checkRequired("cardId", params.cardId().getOrNull()) + val request = + HttpRequest.builder() + .method(HttpMethod.POST) + .baseUrl(clientOptions.baseUrl()) + .addPathSegments("cards", params._pathParam(0), "create_details_iframe") + .body(json(clientOptions.jsonMapper, params._body())) + .build() + .prepare(clientOptions, params) + val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) + val response = clientOptions.httpClient.execute(request, requestOptions) + return errorHandler.handle(response).parseable { + response + .use { createDetailsIframeHandler.handle(it) } + .also { + if (requestOptions.responseValidation!!) { + it.validate() + } + } + } + } + + private val detailsHandler: Handler = + jsonHandler(clientOptions.jsonMapper) + + override fun details( + params: CardDetailsParams, + requestOptions: RequestOptions, + ): HttpResponseFor { + // We check here instead of in the params builder because this can be specified + // positionally or in the params class. + checkRequired("cardId", params.cardId().getOrNull()) + val request = + HttpRequest.builder() + .method(HttpMethod.GET) + .baseUrl(clientOptions.baseUrl()) + .addPathSegments("cards", params._pathParam(0), "details") + .build() + .prepare(clientOptions, params) + val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) + val response = clientOptions.httpClient.execute(request, requestOptions) + return errorHandler.handle(response).parseable { + response + .use { detailsHandler.handle(it) } + .also { + if (requestOptions.responseValidation!!) { + it.validate() + } + } + } + } + + private val updatePinHandler: Handler = + jsonHandler(clientOptions.jsonMapper) + + override fun updatePin( + params: CardUpdatePinParams, + requestOptions: RequestOptions, + ): HttpResponseFor { + // We check here instead of in the params builder because this can be specified + // positionally or in the params class. + checkRequired("cardId", params.cardId().getOrNull()) + val request = + HttpRequest.builder() + .method(HttpMethod.POST) + .baseUrl(clientOptions.baseUrl()) + .addPathSegments("cards", params._pathParam(0), "update_pin") + .body(json(clientOptions.jsonMapper, params._body())) + .build() + .prepare(clientOptions, params) + val requestOptions = requestOptions.applyDefaults(RequestOptions.from(clientOptions)) + val response = clientOptions.httpClient.execute(request, requestOptions) + return errorHandler.handle(response).parseable { + response + .use { updatePinHandler.handle(it) } + .also { + if (requestOptions.responseValidation!!) { + it.validate() + } + } + } + } } } diff --git a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailCreateDetailsIframeParamsTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardCreateDetailsIframeParamsTest.kt similarity index 65% rename from increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailCreateDetailsIframeParamsTest.kt rename to increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardCreateDetailsIframeParamsTest.kt index 2383c37be..f1309a233 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailCreateDetailsIframeParamsTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardCreateDetailsIframeParamsTest.kt @@ -1,15 +1,15 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test -internal class CardDetailCreateDetailsIframeParamsTest { +internal class CardCreateDetailsIframeParamsTest { @Test fun create() { - CardDetailCreateDetailsIframeParams.builder() + CardCreateDetailsIframeParams.builder() .cardId("card_oubs0hwk5rn6knuecxg2") .physicalCardId("physical_card_id") .build() @@ -18,9 +18,7 @@ internal class CardDetailCreateDetailsIframeParamsTest { @Test fun pathParams() { val params = - CardDetailCreateDetailsIframeParams.builder() - .cardId("card_oubs0hwk5rn6knuecxg2") - .build() + CardCreateDetailsIframeParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").build() assertThat(params._pathParam(0)).isEqualTo("card_oubs0hwk5rn6knuecxg2") // out-of-bound path param @@ -30,7 +28,7 @@ internal class CardDetailCreateDetailsIframeParamsTest { @Test fun body() { val params = - CardDetailCreateDetailsIframeParams.builder() + CardCreateDetailsIframeParams.builder() .cardId("card_oubs0hwk5rn6knuecxg2") .physicalCardId("physical_card_id") .build() @@ -43,9 +41,7 @@ internal class CardDetailCreateDetailsIframeParamsTest { @Test fun bodyWithoutOptionalFields() { val params = - CardDetailCreateDetailsIframeParams.builder() - .cardId("card_oubs0hwk5rn6knuecxg2") - .build() + CardCreateDetailsIframeParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").build() val body = params._body() } diff --git a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailDetailsParamsTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardDetailsParamsTest.kt similarity index 58% rename from increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailDetailsParamsTest.kt rename to increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardDetailsParamsTest.kt index d060c8a2c..9dd4e8516 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailDetailsParamsTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardDetailsParamsTest.kt @@ -1,20 +1,20 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test -internal class CardDetailDetailsParamsTest { +internal class CardDetailsParamsTest { @Test fun create() { - CardDetailDetailsParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").build() + CardDetailsParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").build() } @Test fun pathParams() { - val params = CardDetailDetailsParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").build() + val params = CardDetailsParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").build() assertThat(params._pathParam(0)).isEqualTo("card_oubs0hwk5rn6knuecxg2") // out-of-bound path param diff --git a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailsTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardDetailsTest.kt similarity index 97% rename from increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailsTest.kt rename to increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardDetailsTest.kt index 1f8857032..45b492e2f 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailsTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardDetailsTest.kt @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import com.fasterxml.jackson.module.kotlin.jacksonTypeRef import com.increase.api.core.jsonMapper diff --git a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardIframeUrlTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardIframeUrlTest.kt similarity index 97% rename from increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardIframeUrlTest.kt rename to increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardIframeUrlTest.kt index d762a9266..53c1a7b43 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardIframeUrlTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardIframeUrlTest.kt @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import com.fasterxml.jackson.module.kotlin.jacksonTypeRef import com.increase.api.core.jsonMapper diff --git a/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardUpdateParamsTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardUpdateParamsTest.kt index 5b0cd2cb9..8c85822f4 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardUpdateParamsTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardUpdateParamsTest.kt @@ -29,7 +29,6 @@ internal class CardUpdateParamsTest { .build() ) .entityId("entity_id") - .pin("xxxx") .status(CardUpdateParams.Status.ACTIVE) .build() } @@ -66,7 +65,6 @@ internal class CardUpdateParamsTest { .build() ) .entityId("entity_id") - .pin("xxxx") .status(CardUpdateParams.Status.ACTIVE) .build() @@ -92,7 +90,6 @@ internal class CardUpdateParamsTest { .build() ) assertThat(body.entityId()).contains("entity_id") - assertThat(body.pin()).contains("xxxx") assertThat(body.status()).contains(CardUpdateParams.Status.ACTIVE) } diff --git a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailUpdateParamsTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardUpdatePinParamsTest.kt similarity index 58% rename from increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailUpdateParamsTest.kt rename to increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardUpdatePinParamsTest.kt index 0868c5287..5ef05d15d 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/models/carddetails/CardDetailUpdateParamsTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/models/cards/CardUpdatePinParamsTest.kt @@ -1,21 +1,21 @@ // File generated from our OpenAPI spec by Stainless. -package com.increase.api.models.carddetails +package com.increase.api.models.cards import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test -internal class CardDetailUpdateParamsTest { +internal class CardUpdatePinParamsTest { @Test fun create() { - CardDetailUpdateParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").pin("1234").build() + CardUpdatePinParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").pin("1234").build() } @Test fun pathParams() { val params = - CardDetailUpdateParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").pin("1234").build() + CardUpdatePinParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").pin("1234").build() assertThat(params._pathParam(0)).isEqualTo("card_oubs0hwk5rn6knuecxg2") // out-of-bound path param @@ -25,7 +25,7 @@ internal class CardDetailUpdateParamsTest { @Test fun body() { val params = - CardDetailUpdateParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").pin("1234").build() + CardUpdatePinParams.builder().cardId("card_oubs0hwk5rn6knuecxg2").pin("1234").build() val body = params._body() diff --git a/increase-java-core/src/test/kotlin/com/increase/api/services/async/CardDetailServiceAsyncTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/services/async/CardDetailServiceAsyncTest.kt deleted file mode 100644 index 8b9fb2621..000000000 --- a/increase-java-core/src/test/kotlin/com/increase/api/services/async/CardDetailServiceAsyncTest.kt +++ /dev/null @@ -1,71 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. - -package com.increase.api.services.async - -import com.increase.api.TestServerExtension -import com.increase.api.client.okhttp.IncreaseOkHttpClientAsync -import com.increase.api.models.carddetails.CardDetailCreateDetailsIframeParams -import com.increase.api.models.carddetails.CardDetailUpdateParams -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith - -@ExtendWith(TestServerExtension::class) -internal class CardDetailServiceAsyncTest { - - @Test - fun update() { - val client = - IncreaseOkHttpClientAsync.builder() - .baseUrl(TestServerExtension.BASE_URL) - .apiKey("My API Key") - .build() - val cardDetailServiceAsync = client.cardDetails() - - val cardDetailsFuture = - cardDetailServiceAsync.update( - CardDetailUpdateParams.builder() - .cardId("card_oubs0hwk5rn6knuecxg2") - .pin("1234") - .build() - ) - - val cardDetails = cardDetailsFuture.get() - cardDetails.validate() - } - - @Test - fun createDetailsIframe() { - val client = - IncreaseOkHttpClientAsync.builder() - .baseUrl(TestServerExtension.BASE_URL) - .apiKey("My API Key") - .build() - val cardDetailServiceAsync = client.cardDetails() - - val cardIframeUrlFuture = - cardDetailServiceAsync.createDetailsIframe( - CardDetailCreateDetailsIframeParams.builder() - .cardId("card_oubs0hwk5rn6knuecxg2") - .physicalCardId("physical_card_id") - .build() - ) - - val cardIframeUrl = cardIframeUrlFuture.get() - cardIframeUrl.validate() - } - - @Test - fun details() { - val client = - IncreaseOkHttpClientAsync.builder() - .baseUrl(TestServerExtension.BASE_URL) - .apiKey("My API Key") - .build() - val cardDetailServiceAsync = client.cardDetails() - - val cardDetailsFuture = cardDetailServiceAsync.details("card_oubs0hwk5rn6knuecxg2") - - val cardDetails = cardDetailsFuture.get() - cardDetails.validate() - } -} diff --git a/increase-java-core/src/test/kotlin/com/increase/api/services/async/CardServiceAsyncTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/services/async/CardServiceAsyncTest.kt index 6e8899062..b2de39ef1 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/services/async/CardServiceAsyncTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/services/async/CardServiceAsyncTest.kt @@ -4,8 +4,10 @@ package com.increase.api.services.async import com.increase.api.TestServerExtension import com.increase.api.client.okhttp.IncreaseOkHttpClientAsync +import com.increase.api.models.cards.CardCreateDetailsIframeParams import com.increase.api.models.cards.CardCreateParams import com.increase.api.models.cards.CardUpdateParams +import com.increase.api.models.cards.CardUpdatePinParams import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -96,7 +98,6 @@ internal class CardServiceAsyncTest { .build() ) .entityId("entity_id") - .pin("xxxx") .status(CardUpdateParams.Status.ACTIVE) .build() ) @@ -119,4 +120,61 @@ internal class CardServiceAsyncTest { val page = pageFuture.get() page.response().validate() } + + @Test + fun createDetailsIframe() { + val client = + IncreaseOkHttpClientAsync.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val cardServiceAsync = client.cards() + + val cardIframeUrlFuture = + cardServiceAsync.createDetailsIframe( + CardCreateDetailsIframeParams.builder() + .cardId("card_oubs0hwk5rn6knuecxg2") + .physicalCardId("physical_card_id") + .build() + ) + + val cardIframeUrl = cardIframeUrlFuture.get() + cardIframeUrl.validate() + } + + @Test + fun details() { + val client = + IncreaseOkHttpClientAsync.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val cardServiceAsync = client.cards() + + val cardDetailsFuture = cardServiceAsync.details("card_oubs0hwk5rn6knuecxg2") + + val cardDetails = cardDetailsFuture.get() + cardDetails.validate() + } + + @Test + fun updatePin() { + val client = + IncreaseOkHttpClientAsync.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val cardServiceAsync = client.cards() + + val cardDetailsFuture = + cardServiceAsync.updatePin( + CardUpdatePinParams.builder() + .cardId("card_oubs0hwk5rn6knuecxg2") + .pin("1234") + .build() + ) + + val cardDetails = cardDetailsFuture.get() + cardDetails.validate() + } } diff --git a/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/CardDetailServiceTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/CardDetailServiceTest.kt deleted file mode 100644 index 8be2ab0cf..000000000 --- a/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/CardDetailServiceTest.kt +++ /dev/null @@ -1,68 +0,0 @@ -// File generated from our OpenAPI spec by Stainless. - -package com.increase.api.services.blocking - -import com.increase.api.TestServerExtension -import com.increase.api.client.okhttp.IncreaseOkHttpClient -import com.increase.api.models.carddetails.CardDetailCreateDetailsIframeParams -import com.increase.api.models.carddetails.CardDetailUpdateParams -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith - -@ExtendWith(TestServerExtension::class) -internal class CardDetailServiceTest { - - @Test - fun update() { - val client = - IncreaseOkHttpClient.builder() - .baseUrl(TestServerExtension.BASE_URL) - .apiKey("My API Key") - .build() - val cardDetailService = client.cardDetails() - - val cardDetails = - cardDetailService.update( - CardDetailUpdateParams.builder() - .cardId("card_oubs0hwk5rn6knuecxg2") - .pin("1234") - .build() - ) - - cardDetails.validate() - } - - @Test - fun createDetailsIframe() { - val client = - IncreaseOkHttpClient.builder() - .baseUrl(TestServerExtension.BASE_URL) - .apiKey("My API Key") - .build() - val cardDetailService = client.cardDetails() - - val cardIframeUrl = - cardDetailService.createDetailsIframe( - CardDetailCreateDetailsIframeParams.builder() - .cardId("card_oubs0hwk5rn6knuecxg2") - .physicalCardId("physical_card_id") - .build() - ) - - cardIframeUrl.validate() - } - - @Test - fun details() { - val client = - IncreaseOkHttpClient.builder() - .baseUrl(TestServerExtension.BASE_URL) - .apiKey("My API Key") - .build() - val cardDetailService = client.cardDetails() - - val cardDetails = cardDetailService.details("card_oubs0hwk5rn6knuecxg2") - - cardDetails.validate() - } -} diff --git a/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/CardServiceTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/CardServiceTest.kt index d5c72bc46..5a011ed22 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/CardServiceTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/CardServiceTest.kt @@ -4,8 +4,10 @@ package com.increase.api.services.blocking import com.increase.api.TestServerExtension import com.increase.api.client.okhttp.IncreaseOkHttpClient +import com.increase.api.models.cards.CardCreateDetailsIframeParams import com.increase.api.models.cards.CardCreateParams import com.increase.api.models.cards.CardUpdateParams +import com.increase.api.models.cards.CardUpdatePinParams import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -94,7 +96,6 @@ internal class CardServiceTest { .build() ) .entityId("entity_id") - .pin("xxxx") .status(CardUpdateParams.Status.ACTIVE) .build() ) @@ -115,4 +116,58 @@ internal class CardServiceTest { page.response().validate() } + + @Test + fun createDetailsIframe() { + val client = + IncreaseOkHttpClient.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val cardService = client.cards() + + val cardIframeUrl = + cardService.createDetailsIframe( + CardCreateDetailsIframeParams.builder() + .cardId("card_oubs0hwk5rn6knuecxg2") + .physicalCardId("physical_card_id") + .build() + ) + + cardIframeUrl.validate() + } + + @Test + fun details() { + val client = + IncreaseOkHttpClient.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val cardService = client.cards() + + val cardDetails = cardService.details("card_oubs0hwk5rn6knuecxg2") + + cardDetails.validate() + } + + @Test + fun updatePin() { + val client = + IncreaseOkHttpClient.builder() + .baseUrl(TestServerExtension.BASE_URL) + .apiKey("My API Key") + .build() + val cardService = client.cards() + + val cardDetails = + cardService.updatePin( + CardUpdatePinParams.builder() + .cardId("card_oubs0hwk5rn6knuecxg2") + .pin("1234") + .build() + ) + + cardDetails.validate() + } } diff --git a/increase-java-proguard-test/src/test/kotlin/com/increase/api/proguard/ProGuardCompatibilityTest.kt b/increase-java-proguard-test/src/test/kotlin/com/increase/api/proguard/ProGuardCompatibilityTest.kt index 1892cf456..3e72bd6f1 100644 --- a/increase-java-proguard-test/src/test/kotlin/com/increase/api/proguard/ProGuardCompatibilityTest.kt +++ b/increase-java-proguard-test/src/test/kotlin/com/increase/api/proguard/ProGuardCompatibilityTest.kt @@ -53,7 +53,6 @@ internal class ProGuardCompatibilityTest { assertThat(client.accountNumbers()).isNotNull() assertThat(client.accountTransfers()).isNotNull() assertThat(client.cards()).isNotNull() - assertThat(client.cardDetails()).isNotNull() assertThat(client.cardPayments()).isNotNull() assertThat(client.cardPurchaseSupplements()).isNotNull() assertThat(client.physicalCards()).isNotNull() From f83b25be3ba1adba101b82eebe027ead67a5cced Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 24 Sep 2025 00:56:55 +0000 Subject: [PATCH 2/2] release: 0.336.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ README.md | 10 +++++----- build.gradle.kts | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a61c73cba..b054780a6 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.335.0" + ".": "0.336.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 402349667..3bc63f2be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.336.0 (2025-09-24) + +Full Changelog: [v0.335.0...v0.336.0](https://github.com/Increase/increase-java/compare/v0.335.0...v0.336.0) + +### Features + +* **api:** api update ([d22557a](https://github.com/Increase/increase-java/commit/d22557adeedb4447fa7b1e6567addf33ac6f34af)) + ## 0.335.0 (2025-09-24) Full Changelog: [v0.334.0...v0.335.0](https://github.com/Increase/increase-java/compare/v0.334.0...v0.335.0) diff --git a/README.md b/README.md index 418ddf6a2..252319c51 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ -[![Maven Central](https://img.shields.io/maven-central/v/com.increase.api/increase-java)](https://central.sonatype.com/artifact/com.increase.api/increase-java/0.335.0) -[![javadoc](https://javadoc.io/badge2/com.increase.api/increase-java/0.335.0/javadoc.svg)](https://javadoc.io/doc/com.increase.api/increase-java/0.335.0) +[![Maven Central](https://img.shields.io/maven-central/v/com.increase.api/increase-java)](https://central.sonatype.com/artifact/com.increase.api/increase-java/0.336.0) +[![javadoc](https://javadoc.io/badge2/com.increase.api/increase-java/0.336.0/javadoc.svg)](https://javadoc.io/doc/com.increase.api/increase-java/0.336.0) @@ -13,7 +13,7 @@ The Increase Java SDK is similar to the Increase Kotlin SDK but with minor diffe -The REST API documentation can be found on [increase.com](https://increase.com/documentation). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.increase.api/increase-java/0.335.0). +The REST API documentation can be found on [increase.com](https://increase.com/documentation). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.increase.api/increase-java/0.336.0). @@ -24,7 +24,7 @@ The REST API documentation can be found on [increase.com](https://increase.com/d ### Gradle ```kotlin -implementation("com.increase.api:increase-java:0.335.0") +implementation("com.increase.api:increase-java:0.336.0") ``` ### Maven @@ -33,7 +33,7 @@ implementation("com.increase.api:increase-java:0.335.0") com.increase.api increase-java - 0.335.0 + 0.336.0 ``` diff --git a/build.gradle.kts b/build.gradle.kts index 1fd08b904..d7f918071 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ repositories { allprojects { group = "com.increase.api" - version = "0.335.0" // x-release-please-version + version = "0.336.0" // x-release-please-version } subprojects {