Skip to content

Commit aedd2bf

Browse files
feat(api): api update (#112)
1 parent 0a4c949 commit aedd2bf

12 files changed

Lines changed: 946 additions & 8 deletions

File tree

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
configured_endpoints: 96
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb%2Forb-1345a8e288e34d5477b0e189877225f83939a59078c22fbb5367712e376c5d19.yml
1+
configured_endpoints: 97
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/orb%2Forb-bf3e71b33372f4a9307f4b6cb689ea46b3cf583ecc5d79eee9601cd0b0467c9a.yml

orb-java-core/src/main/kotlin/com/withorb/api/models/Invoice.kt

Lines changed: 278 additions & 3 deletions
Large diffs are not rendered by default.

orb-java-core/src/main/kotlin/com/withorb/api/models/InvoiceFetchUpcomingResponse.kt

Lines changed: 278 additions & 3 deletions
Large diffs are not rendered by default.
Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
// File generated from our OpenAPI spec by Stainless.
2+
3+
package com.withorb.api.models
4+
5+
import com.withorb.api.core.JsonValue
6+
import com.withorb.api.core.NoAutoDetect
7+
import com.withorb.api.core.http.Headers
8+
import com.withorb.api.core.http.QueryParams
9+
import com.withorb.api.core.toImmutable
10+
import com.withorb.api.models.*
11+
import java.util.Objects
12+
import java.util.Optional
13+
14+
class InvoicePayParams
15+
constructor(
16+
private val invoiceId: String,
17+
private val additionalHeaders: Headers,
18+
private val additionalQueryParams: QueryParams,
19+
private val additionalBodyProperties: Map<String, JsonValue>,
20+
) {
21+
22+
fun invoiceId(): String = invoiceId
23+
24+
@JvmSynthetic
25+
internal fun getBody(): Optional<Map<String, JsonValue>> {
26+
return Optional.ofNullable(additionalBodyProperties.ifEmpty { null })
27+
}
28+
29+
@JvmSynthetic internal fun getHeaders(): Headers = additionalHeaders
30+
31+
@JvmSynthetic internal fun getQueryParams(): QueryParams = additionalQueryParams
32+
33+
fun getPathParam(index: Int): String {
34+
return when (index) {
35+
0 -> invoiceId
36+
else -> ""
37+
}
38+
}
39+
40+
fun _additionalHeaders(): Headers = additionalHeaders
41+
42+
fun _additionalQueryParams(): QueryParams = additionalQueryParams
43+
44+
fun _additionalBodyProperties(): Map<String, JsonValue> = additionalBodyProperties
45+
46+
override fun equals(other: Any?): Boolean {
47+
if (this === other) {
48+
return true
49+
}
50+
51+
return /* spotless:off */ other is InvoicePayParams && this.invoiceId == other.invoiceId && this.additionalHeaders == other.additionalHeaders && this.additionalQueryParams == other.additionalQueryParams && this.additionalBodyProperties == other.additionalBodyProperties /* spotless:on */
52+
}
53+
54+
override fun hashCode(): Int {
55+
return /* spotless:off */ Objects.hash(invoiceId, additionalHeaders, additionalQueryParams, additionalBodyProperties) /* spotless:on */
56+
}
57+
58+
override fun toString() =
59+
"InvoicePayParams{invoiceId=$invoiceId, additionalHeaders=$additionalHeaders, additionalQueryParams=$additionalQueryParams, additionalBodyProperties=$additionalBodyProperties}"
60+
61+
fun toBuilder() = Builder().from(this)
62+
63+
companion object {
64+
65+
@JvmStatic fun builder() = Builder()
66+
}
67+
68+
@NoAutoDetect
69+
class Builder {
70+
71+
private var invoiceId: String? = null
72+
private var additionalHeaders: Headers.Builder = Headers.builder()
73+
private var additionalQueryParams: QueryParams.Builder = QueryParams.builder()
74+
private var additionalBodyProperties: MutableMap<String, JsonValue> = mutableMapOf()
75+
76+
@JvmSynthetic
77+
internal fun from(invoicePayParams: InvoicePayParams) = apply {
78+
this.invoiceId = invoicePayParams.invoiceId
79+
additionalHeaders(invoicePayParams.additionalHeaders)
80+
additionalQueryParams(invoicePayParams.additionalQueryParams)
81+
additionalBodyProperties(invoicePayParams.additionalBodyProperties)
82+
}
83+
84+
fun invoiceId(invoiceId: String) = apply { this.invoiceId = invoiceId }
85+
86+
fun additionalHeaders(additionalHeaders: Headers) = apply {
87+
this.additionalHeaders.clear()
88+
putAllAdditionalHeaders(additionalHeaders)
89+
}
90+
91+
fun additionalHeaders(additionalHeaders: Map<String, Iterable<String>>) = apply {
92+
this.additionalHeaders.clear()
93+
putAllAdditionalHeaders(additionalHeaders)
94+
}
95+
96+
fun putAdditionalHeader(name: String, value: String) = apply {
97+
additionalHeaders.put(name, value)
98+
}
99+
100+
fun putAdditionalHeaders(name: String, values: Iterable<String>) = apply {
101+
additionalHeaders.put(name, values)
102+
}
103+
104+
fun putAllAdditionalHeaders(additionalHeaders: Headers) = apply {
105+
this.additionalHeaders.putAll(additionalHeaders)
106+
}
107+
108+
fun putAllAdditionalHeaders(additionalHeaders: Map<String, Iterable<String>>) = apply {
109+
this.additionalHeaders.putAll(additionalHeaders)
110+
}
111+
112+
fun replaceAdditionalHeaders(name: String, value: String) = apply {
113+
additionalHeaders.replace(name, value)
114+
}
115+
116+
fun replaceAdditionalHeaders(name: String, values: Iterable<String>) = apply {
117+
additionalHeaders.replace(name, values)
118+
}
119+
120+
fun replaceAllAdditionalHeaders(additionalHeaders: Headers) = apply {
121+
this.additionalHeaders.replaceAll(additionalHeaders)
122+
}
123+
124+
fun replaceAllAdditionalHeaders(additionalHeaders: Map<String, Iterable<String>>) = apply {
125+
this.additionalHeaders.replaceAll(additionalHeaders)
126+
}
127+
128+
fun removeAdditionalHeaders(name: String) = apply { additionalHeaders.remove(name) }
129+
130+
fun removeAllAdditionalHeaders(names: Set<String>) = apply {
131+
additionalHeaders.removeAll(names)
132+
}
133+
134+
fun additionalQueryParams(additionalQueryParams: QueryParams) = apply {
135+
this.additionalQueryParams.clear()
136+
putAllAdditionalQueryParams(additionalQueryParams)
137+
}
138+
139+
fun additionalQueryParams(additionalQueryParams: Map<String, Iterable<String>>) = apply {
140+
this.additionalQueryParams.clear()
141+
putAllAdditionalQueryParams(additionalQueryParams)
142+
}
143+
144+
fun putAdditionalQueryParam(key: String, value: String) = apply {
145+
additionalQueryParams.put(key, value)
146+
}
147+
148+
fun putAdditionalQueryParams(key: String, values: Iterable<String>) = apply {
149+
additionalQueryParams.put(key, values)
150+
}
151+
152+
fun putAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply {
153+
this.additionalQueryParams.putAll(additionalQueryParams)
154+
}
155+
156+
fun putAllAdditionalQueryParams(additionalQueryParams: Map<String, Iterable<String>>) =
157+
apply {
158+
this.additionalQueryParams.putAll(additionalQueryParams)
159+
}
160+
161+
fun replaceAdditionalQueryParams(key: String, value: String) = apply {
162+
additionalQueryParams.replace(key, value)
163+
}
164+
165+
fun replaceAdditionalQueryParams(key: String, values: Iterable<String>) = apply {
166+
additionalQueryParams.replace(key, values)
167+
}
168+
169+
fun replaceAllAdditionalQueryParams(additionalQueryParams: QueryParams) = apply {
170+
this.additionalQueryParams.replaceAll(additionalQueryParams)
171+
}
172+
173+
fun replaceAllAdditionalQueryParams(additionalQueryParams: Map<String, Iterable<String>>) =
174+
apply {
175+
this.additionalQueryParams.replaceAll(additionalQueryParams)
176+
}
177+
178+
fun removeAdditionalQueryParams(key: String) = apply { additionalQueryParams.remove(key) }
179+
180+
fun removeAllAdditionalQueryParams(keys: Set<String>) = apply {
181+
additionalQueryParams.removeAll(keys)
182+
}
183+
184+
fun additionalBodyProperties(additionalBodyProperties: Map<String, JsonValue>) = apply {
185+
this.additionalBodyProperties.clear()
186+
putAllAdditionalBodyProperties(additionalBodyProperties)
187+
}
188+
189+
fun putAdditionalBodyProperty(key: String, value: JsonValue) = apply {
190+
additionalBodyProperties.put(key, value)
191+
}
192+
193+
fun putAllAdditionalBodyProperties(additionalBodyProperties: Map<String, JsonValue>) =
194+
apply {
195+
this.additionalBodyProperties.putAll(additionalBodyProperties)
196+
}
197+
198+
fun removeAdditionalBodyProperty(key: String) = apply {
199+
additionalBodyProperties.remove(key)
200+
}
201+
202+
fun removeAllAdditionalBodyProperties(keys: Set<String>) = apply {
203+
keys.forEach(::removeAdditionalBodyProperty)
204+
}
205+
206+
fun build(): InvoicePayParams =
207+
InvoicePayParams(
208+
checkNotNull(invoiceId) { "`invoiceId` is required but was not set" },
209+
additionalHeaders.build(),
210+
additionalQueryParams.build(),
211+
additionalBodyProperties.toImmutable(),
212+
)
213+
}
214+
}

orb-java-core/src/main/kotlin/com/withorb/api/services/async/InvoiceServiceAsync.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.withorb.api.models.InvoiceIssueParams
1414
import com.withorb.api.models.InvoiceListPageAsync
1515
import com.withorb.api.models.InvoiceListParams
1616
import com.withorb.api.models.InvoiceMarkPaidParams
17+
import com.withorb.api.models.InvoicePayParams
1718
import com.withorb.api.models.InvoiceUpdateParams
1819
import com.withorb.api.models.InvoiceVoidInvoiceParams
1920
import java.util.concurrent.CompletableFuture
@@ -102,6 +103,16 @@ interface InvoiceServiceAsync {
102103
requestOptions: RequestOptions = RequestOptions.none()
103104
): CompletableFuture<Invoice>
104105

106+
/**
107+
* This endpoint collects payment for an invoice using the customer's default payment method.
108+
* This action can only be taken on invoices with status "issued".
109+
*/
110+
@JvmOverloads
111+
fun pay(
112+
params: InvoicePayParams,
113+
requestOptions: RequestOptions = RequestOptions.none()
114+
): CompletableFuture<Invoice>
115+
105116
/**
106117
* This endpoint allows an invoice's status to be set the `void` status. This can only be done
107118
* to invoices that are in the `issued` status.

orb-java-core/src/main/kotlin/com/withorb/api/services/async/InvoiceServiceAsyncImpl.kt

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.withorb.api.models.InvoiceIssueParams
2121
import com.withorb.api.models.InvoiceListPageAsync
2222
import com.withorb.api.models.InvoiceListParams
2323
import com.withorb.api.models.InvoiceMarkPaidParams
24+
import com.withorb.api.models.InvoicePayParams
2425
import com.withorb.api.models.InvoiceUpdateParams
2526
import com.withorb.api.models.InvoiceVoidInvoiceParams
2627
import java.util.concurrent.CompletableFuture
@@ -275,6 +276,39 @@ constructor(
275276
}
276277
}
277278

279+
private val payHandler: Handler<Invoice> =
280+
jsonHandler<Invoice>(clientOptions.jsonMapper).withErrorHandler(errorHandler)
281+
282+
/**
283+
* This endpoint collects payment for an invoice using the customer's default payment method.
284+
* This action can only be taken on invoices with status "issued".
285+
*/
286+
override fun pay(
287+
params: InvoicePayParams,
288+
requestOptions: RequestOptions
289+
): CompletableFuture<Invoice> {
290+
val request =
291+
HttpRequest.builder()
292+
.method(HttpMethod.POST)
293+
.addPathSegments("invoices", params.getPathParam(0), "pay")
294+
.putAllQueryParams(clientOptions.queryParams)
295+
.replaceAllQueryParams(params.getQueryParams())
296+
.putAllHeaders(clientOptions.headers)
297+
.replaceAllHeaders(params.getHeaders())
298+
.apply { params.getBody().ifPresent { body(json(clientOptions.jsonMapper, it)) } }
299+
.build()
300+
return clientOptions.httpClient.executeAsync(request, requestOptions).thenApply { response
301+
->
302+
response
303+
.use { payHandler.handle(it) }
304+
.apply {
305+
if (requestOptions.responseValidation ?: clientOptions.responseValidation) {
306+
validate()
307+
}
308+
}
309+
}
310+
}
311+
278312
private val voidInvoiceHandler: Handler<Invoice> =
279313
jsonHandler<Invoice>(clientOptions.jsonMapper).withErrorHandler(errorHandler)
280314

orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/InvoiceService.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.withorb.api.models.InvoiceIssueParams
1414
import com.withorb.api.models.InvoiceListPage
1515
import com.withorb.api.models.InvoiceListParams
1616
import com.withorb.api.models.InvoiceMarkPaidParams
17+
import com.withorb.api.models.InvoicePayParams
1718
import com.withorb.api.models.InvoiceUpdateParams
1819
import com.withorb.api.models.InvoiceVoidInvoiceParams
1920

@@ -101,6 +102,16 @@ interface InvoiceService {
101102
requestOptions: RequestOptions = RequestOptions.none()
102103
): Invoice
103104

105+
/**
106+
* This endpoint collects payment for an invoice using the customer's default payment method.
107+
* This action can only be taken on invoices with status "issued".
108+
*/
109+
@JvmOverloads
110+
fun pay(
111+
params: InvoicePayParams,
112+
requestOptions: RequestOptions = RequestOptions.none()
113+
): Invoice
114+
104115
/**
105116
* This endpoint allows an invoice's status to be set the `void` status. This can only be done
106117
* to invoices that are in the `issued` status.

orb-java-core/src/main/kotlin/com/withorb/api/services/blocking/InvoiceServiceImpl.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.withorb.api.models.InvoiceIssueParams
2121
import com.withorb.api.models.InvoiceListPage
2222
import com.withorb.api.models.InvoiceListParams
2323
import com.withorb.api.models.InvoiceMarkPaidParams
24+
import com.withorb.api.models.InvoicePayParams
2425
import com.withorb.api.models.InvoiceUpdateParams
2526
import com.withorb.api.models.InvoiceVoidInvoiceParams
2627

@@ -249,6 +250,35 @@ constructor(
249250
}
250251
}
251252

253+
private val payHandler: Handler<Invoice> =
254+
jsonHandler<Invoice>(clientOptions.jsonMapper).withErrorHandler(errorHandler)
255+
256+
/**
257+
* This endpoint collects payment for an invoice using the customer's default payment method.
258+
* This action can only be taken on invoices with status "issued".
259+
*/
260+
override fun pay(params: InvoicePayParams, requestOptions: RequestOptions): Invoice {
261+
val request =
262+
HttpRequest.builder()
263+
.method(HttpMethod.POST)
264+
.addPathSegments("invoices", params.getPathParam(0), "pay")
265+
.putAllQueryParams(clientOptions.queryParams)
266+
.replaceAllQueryParams(params.getQueryParams())
267+
.putAllHeaders(clientOptions.headers)
268+
.replaceAllHeaders(params.getHeaders())
269+
.apply { params.getBody().ifPresent { body(json(clientOptions.jsonMapper, it)) } }
270+
.build()
271+
return clientOptions.httpClient.execute(request, requestOptions).let { response ->
272+
response
273+
.use { payHandler.handle(it) }
274+
.apply {
275+
if (requestOptions.responseValidation ?: clientOptions.responseValidation) {
276+
validate()
277+
}
278+
}
279+
}
280+
}
281+
252282
private val voidInvoiceHandler: Handler<Invoice> =
253283
jsonHandler<Invoice>(clientOptions.jsonMapper).withErrorHandler(errorHandler)
254284

0 commit comments

Comments
 (0)