Skip to content

Commit f0a2b96

Browse files
github-actions[bot]speakeasybotspeakeasy-github[bot]
authored
chore: 🐝 Update SDK - Generate 0.15.0 (#33)
* ## Java SDK Changes Detected: * `stackone.lms.createUserAssignment()`: * `request.lmscreateassignmentrequestdto.learningObjectExternalReference` **Changed** **Breaking** ⚠️ * `stackone.accounts.getAccount()`: `response.setup_information` **Changed** **Breaking** ⚠️ * `stackone.accounts.deleteAccount()`: `response.setup_information` **Changed** **Breaking** ⚠️ * `stackone.accounts.updateAccount()`: `response.setup_information` **Changed** **Breaking** ⚠️ * `stackone.lms.createUserCompletion()`: * `request.lmscreatecompletionrequestdto.learningObjectExternalReference` **Changed** **Breaking** ⚠️ * `stackone.lms.updateContent()`: * `request.lmscreatecontentrequestdto.externalReference` **Changed** **Breaking** ⚠️ * `stackone.accounts.listLinkedAccounts()`: `response.[].setupInformation` **Changed** **Breaking** ⚠️ * `stackone.lms.upsertContent()`: * `request.lmsupsertcontentrequestdto.externalReference` **Changed** **Breaking** ⚠️ * `stackone.lms.batchUpsertContent()`: * `request.lmsbatchupsertcontentrequestdto.items.[].externalReference` **Changed** **Breaking** ⚠️ * `stackone.hris.getEmployee()`: `response.data` **Changed** * `stackone.ats.getCandidate()`: `response.data.tags` **Added** * `stackone.ats.listCandidates()`: `response.data.[].tags` **Added** * `stackone.hris.updateEmployee()`: * `request.hrisupdateemployeerequestdto.title` **Added** * `stackone.hris.createEmployee()`: * `request.hriscreateemployeerequestdto.title` **Added** * `stackone.hris.listEmployees()`: `response.data.[]` **Changed** * empty commit to trigger [run-tests] workflow --------- Co-authored-by: speakeasybot <[email protected]> Co-authored-by: speakeasy-github[bot] <128539517+speakeasy-github[bot]@users.noreply.github.com>
1 parent d5e1d5a commit f0a2b96

File tree

1,008 files changed

+28802
-104335
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,008 files changed

+28802
-104335
lines changed

β€Ž.speakeasy/gen.lockβ€Ž

Lines changed: 66 additions & 41 deletions
Large diffs are not rendered by default.

β€Ž.speakeasy/gen.yamlβ€Ž

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ generation:
1717
oAuth2ClientCredentialsEnabled: false
1818
oAuth2PasswordEnabled: false
1919
hoistGlobalSecurity: true
20+
schemas:
21+
allOfMergeStrategy: shallowMerge
2022
tests:
2123
generateTests: true
2224
generateNewTests: false
2325
skipResponseBodyAssertions: false
2426
java:
25-
version: 0.14.3
27+
version: 0.15.0
2628
additionalDependencies: []
2729
additionalPlugins: []
2830
artifactID: stackone-client-java

β€Ž.speakeasy/workflow.lockβ€Ž

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
speakeasyVersion: 1.636.3
1+
speakeasyVersion: 1.639.3
22
sources:
33
StackOne-OAS:
44
sourceNamespace: stackone-oas
5-
sourceRevisionDigest: sha256:d7fd910c2d17c56e99b772a5b8cbcf60188396393096d7fd816fe5626f6ff91d
6-
sourceBlobDigest: sha256:a2b6f32eff36f507ffdb54b05281fae6d0687a1746c84df4c3bb716c047f4e48
5+
sourceRevisionDigest: sha256:95ba30678541dbf21f97328b01e26f69287141c5d918018f1fb90170c21b7d4c
6+
sourceBlobDigest: sha256:4a7179ee460f2815f2aa0f24460792e15010b6c4985871d8b2ddffd37b999173
77
tags:
88
- latest
9-
- speakeasy-sdk-regen-1759881963
9+
- speakeasy-sdk-regen-1760745963
1010
- 1.0.0
1111
targets:
1212
stackone:
1313
source: StackOne-OAS
1414
sourceNamespace: stackone-oas
15-
sourceRevisionDigest: sha256:d7fd910c2d17c56e99b772a5b8cbcf60188396393096d7fd816fe5626f6ff91d
16-
sourceBlobDigest: sha256:a2b6f32eff36f507ffdb54b05281fae6d0687a1746c84df4c3bb716c047f4e48
15+
sourceRevisionDigest: sha256:95ba30678541dbf21f97328b01e26f69287141c5d918018f1fb90170c21b7d4c
16+
sourceBlobDigest: sha256:4a7179ee460f2815f2aa0f24460792e15010b6c4985871d8b2ddffd37b999173
1717
codeSamplesNamespace: stack-one-oas-java-code-samples
18-
codeSamplesRevisionDigest: sha256:e243e6e2fe78b31dee03cf2a1c53f4d32a8a7f0be300f01478016e00def633f1
18+
codeSamplesRevisionDigest: sha256:9b9afe21f0247d65f0ba96612641f727206eaca8a076524d2f9e8c16f0a6b8bd
1919
workflow:
2020
workflowVersion: 1.0.0
2121
speakeasyVersion: latest

β€ŽREADME.mdβ€Ž

Lines changed: 184 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ Accounting: The documentation for the StackOne Unified API - ACCOUNTING
2727
* [Server Selection](#server-selection)
2828
* [Asynchronous Support](#asynchronous-support)
2929
* [Authentication](#authentication)
30+
* [Custom HTTP Client](#custom-http-client)
3031
* [Debugging](#debugging)
3132
* [Development](#development)
3233
* [Maturity](#maturity)
@@ -45,15 +46,15 @@ The samples below show how a published SDK artifact is used:
4546

4647
Gradle:
4748
```groovy
48-
implementation 'com.stackone:stackone-client-java:0.14.3'
49+
implementation 'com.stackone:stackone-client-java:0.15.0'
4950
```
5051

5152
Maven:
5253
```xml
5354
<dependency>
5455
<groupId>com.stackone</groupId>
5556
<artifactId>stackone-client-java</artifactId>
56-
<version>0.14.3</version>
57+
<version>0.15.0</version>
5758
</dependency>
5859
```
5960

@@ -100,12 +101,12 @@ public class Application {
100101

101102
HrisListEmployeesRequest req = HrisListEmployeesRequest.builder()
102103
.xAccountId("<id>")
103-
.fields("id,remote_id,first_name,last_name,name,display_name,gender,ethnicity,date_of_birth,birthday,marital_status,avatar_url,avatar,personal_email,personal_phone_number,work_email,work_phone_number,job_id,remote_job_id,job_title,job_description,department_id,remote_department_id,department,cost_centers,company,manager_id,remote_manager_id,hire_date,start_date,tenure,work_anniversary,employment_type,employment_contract_type,employment_status,termination_date,company_name,company_id,remote_company_id,preferred_language,citizenships,home_location,work_location,employments,custom_fields,created_at,updated_at,benefits,employee_number,national_identity_number,national_identity_numbers,skills,unified_custom_fields")
104+
.fields("id,remote_id,title,first_name,last_name,name,display_name,gender,ethnicity,date_of_birth,birthday,marital_status,avatar_url,avatar,personal_email,personal_phone_number,work_email,work_phone_number,job_id,remote_job_id,job_title,job_description,department_id,remote_department_id,department,cost_centers,company,manager_id,remote_manager_id,hire_date,start_date,tenure,work_anniversary,employment_type,employment_contract_type,employment_status,termination_date,company_name,company_id,remote_company_id,preferred_language,citizenships,home_location,work_location,employments,custom_fields,created_at,updated_at,benefits,employee_number,national_identity_number,national_identity_numbers,bank_details,skills,unified_custom_fields")
104105
.filter(HrisListEmployeesQueryParamFilter.builder()
105106
.updatedAfter(OffsetDateTime.parse("2020-01-01T00:00:00.000Z"))
106107
.build())
107108
.expand("company,employments,work_location,home_location,groups,skills")
108-
.include("avatar_url,avatar,custom_fields,job_description,benefits")
109+
.include("avatar_url,avatar,custom_fields,job_description,benefits,bank_details")
109110
.build();
110111

111112

@@ -790,25 +791,19 @@ public class Application {
790791

791792
Handling errors in this SDK should largely match your expectations. All operations return a response object or raise an exception.
792793

793-
By default, an API error will throw a `models/errors/SDKError` exception. When custom error responses are specified for an operation, the SDK may also throw their associated exception. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `createConnectSession` method throws the following exceptions:
794-
795-
| Error Type | Status Code | Content Type |
796-
| ----------------------------------------- | ----------- | ---------------- |
797-
| models/errors/BadRequestResponse | 400 | application/json |
798-
| models/errors/UnauthorizedResponse | 401 | application/json |
799-
| models/errors/ForbiddenResponse | 403 | application/json |
800-
| models/errors/NotFoundResponse | 404 | application/json |
801-
| models/errors/RequestTimedOutResponse | 408 | application/json |
802-
| models/errors/ConflictResponse | 409 | application/json |
803-
| models/errors/UnprocessableEntityResponse | 422 | application/json |
804-
| models/errors/TooManyRequestsResponse | 429 | application/json |
805-
| models/errors/InternalServerErrorResponse | 500 | application/json |
806-
| models/errors/NotImplementedResponse | 501 | application/json |
807-
| models/errors/BadGatewayResponse | 502 | application/json |
808-
| models/errors/SDKError | 4XX, 5XX | \*/\* |
809794

810-
### Example
795+
[`StackOneError`](./src/main/java/models/errors/StackOneError.java) is the base class for all HTTP error responses. It has the following properties:
796+
797+
| Method | Type | Description |
798+
| ---------------- | --------------------------- | ------------------------------------------------------------------------ |
799+
| `message()` | `String` | Error message |
800+
| `code()` | `int` | HTTP response status code eg `404` |
801+
| `headers` | `Map<String, List<String>>` | HTTP response headers |
802+
| `body()` | `byte[]` | HTTP body as a byte array. Can be empty array if no body is returned. |
803+
| `bodyAsString()` | `String` | HTTP body as a UTF-8 string. Can be empty string if no body is returned. |
804+
| `rawResponse()` | `HttpResponse<?>` | Raw HTTP response (body already read and not available for re-read) |
811805

806+
### Example
812807
```java
813808
package hello.world;
814809

@@ -860,6 +855,38 @@ public class Application {
860855
}
861856
}
862857
```
858+
859+
### Error Classes
860+
**Primary errors:**
861+
* [`StackOneError`](./src/main/java/models/errors/StackOneError.java): The base class for HTTP error responses.
862+
* [`com.stackone.stackone_client_java.models.errors.BadRequestResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.BadRequestResponse.java): Invalid request. Status code `400`.
863+
* [`com.stackone.stackone_client_java.models.errors.UnauthorizedResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.UnauthorizedResponse.java): Unauthorized access. Status code `401`.
864+
* [`com.stackone.stackone_client_java.models.errors.ForbiddenResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.ForbiddenResponse.java): Forbidden. Status code `403`.
865+
* [`com.stackone.stackone_client_java.models.errors.NotFoundResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.NotFoundResponse.java): Resource not found. Status code `404`.
866+
* [`com.stackone.stackone_client_java.models.errors.RequestTimedOutResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.RequestTimedOutResponse.java): The request has timed out. Status code `408`.
867+
* [`com.stackone.stackone_client_java.models.errors.ConflictResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.ConflictResponse.java): Conflict with current state. Status code `409`.
868+
* [`com.stackone.stackone_client_java.models.errors.UnprocessableEntityResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.UnprocessableEntityResponse.java): Validation error. Status code `422`.
869+
* [`com.stackone.stackone_client_java.models.errors.TooManyRequestsResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.TooManyRequestsResponse.java): Too many requests. Status code `429`.
870+
* [`com.stackone.stackone_client_java.models.errors.InternalServerErrorResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.InternalServerErrorResponse.java): Server error while executing the request. Status code `500`.
871+
* [`com.stackone.stackone_client_java.models.errors.NotImplementedResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.NotImplementedResponse.java): This functionality is not implemented. Status code `501`.
872+
* [`com.stackone.stackone_client_java.models.errors.BadGatewayResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.BadGatewayResponse.java): Bad gateway error. Status code `502`.
873+
* [`com.stackone.stackone_client_java.models.errors.PreconditionFailedResponse`](./src/main/java/models/errors/com.stackone.stackone_client_java.models.errors.PreconditionFailedResponse.java): Precondition failed: linked account belongs to a disabled integration. Status code `412`. *
874+
875+
<details><summary>Less common errors (6)</summary>
876+
877+
<br />
878+
879+
**Network errors:**
880+
* `java.io.IOException` (always wrapped by `java.io.UncheckedIOException`). Commonly encountered subclasses of
881+
`IOException` include `java.net.ConnectException`, `java.net.SocketTimeoutException`, `EOFException` (there are
882+
many more subclasses in the JDK platform).
883+
884+
**Inherit from [`StackOneError`](./src/main/java/models/errors/StackOneError.java)**:
885+
886+
887+
</details>
888+
889+
\* Check [the method documentation](#available-resources-and-operations) to see if the error is applicable.
863890
<!-- End Error Handling [errors] -->
864891

865892
<!-- Start Server Selection [server] -->
@@ -1085,6 +1112,142 @@ public class Application {
10851112
```
10861113
<!-- End Authentication [security] -->
10871114

1115+
<!-- Start Custom HTTP Client [http-client] -->
1116+
## Custom HTTP Client
1117+
1118+
The Java SDK makes API calls using an `HTTPClient` that wraps the native
1119+
[HttpClient](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpClient.html). This
1120+
client provides the ability to attach hooks around the request lifecycle that can be used to modify the request or handle
1121+
errors and response.
1122+
1123+
The `HTTPClient` interface allows you to either use the default `SpeakeasyHTTPClient` that comes with the SDK,
1124+
or provide your own custom implementation with customized configuration such as custom executors, SSL context,
1125+
connection pools, and other HTTP client settings.
1126+
1127+
The interface provides synchronous (`send`) methods and asynchronous (`sendAsync`) methods. The `sendAsync` method
1128+
is used to power the async SDK methods and returns a `CompletableFuture<HttpResponse<Blob>>` for non-blocking operations.
1129+
1130+
The following example shows how to add a custom header and handle errors:
1131+
1132+
```java
1133+
import com.stackone.stackone_client_java.StackOne;
1134+
import com.stackone.stackone_client_java.utils.HTTPClient;
1135+
import com.stackone.stackone_client_java.utils.SpeakeasyHTTPClient;
1136+
import com.stackone.stackone_client_java.utils.Utils;
1137+
1138+
import java.io.IOException;
1139+
import java.net.URISyntaxException;
1140+
import java.net.http.HttpRequest;
1141+
import java.net.http.HttpResponse;
1142+
import java.io.InputStream;
1143+
import java.time.Duration;
1144+
1145+
public class Application {
1146+
public static void main(String[] args) {
1147+
// Create a custom HTTP client with hooks
1148+
HTTPClient httpClient = new HTTPClient() {
1149+
private final HTTPClient defaultClient = new SpeakeasyHTTPClient();
1150+
1151+
@Override
1152+
public HttpResponse<InputStream> send(HttpRequest request) throws IOException, URISyntaxException, InterruptedException {
1153+
// Add custom header and timeout using Utils.copy()
1154+
HttpRequest modifiedRequest = Utils.copy(request)
1155+
.header("x-custom-header", "custom value")
1156+
.timeout(Duration.ofSeconds(30))
1157+
.build();
1158+
1159+
try {
1160+
HttpResponse<InputStream> response = defaultClient.send(modifiedRequest);
1161+
// Log successful response
1162+
System.out.println("Request successful: " + response.statusCode());
1163+
return response;
1164+
} catch (Exception error) {
1165+
// Log error
1166+
System.err.println("Request failed: " + error.getMessage());
1167+
throw error;
1168+
}
1169+
}
1170+
};
1171+
1172+
StackOne sdk = StackOne.builder()
1173+
.client(httpClient)
1174+
.build();
1175+
}
1176+
}
1177+
```
1178+
1179+
<details>
1180+
<summary>Custom HTTP Client Configuration</summary>
1181+
1182+
You can also provide a completely custom HTTP client with your own configuration:
1183+
1184+
```java
1185+
import com.stackone.stackone_client_java.StackOne;
1186+
import com.stackone.stackone_client_java.utils.HTTPClient;
1187+
import com.stackone.stackone_client_java.utils.Blob;
1188+
import com.stackone.stackone_client_java.utils.ResponseWithBody;
1189+
1190+
import java.io.IOException;
1191+
import java.net.URISyntaxException;
1192+
import java.net.http.HttpClient;
1193+
import java.net.http.HttpRequest;
1194+
import java.net.http.HttpResponse;
1195+
import java.io.InputStream;
1196+
import java.time.Duration;
1197+
import java.util.concurrent.Executors;
1198+
import java.util.concurrent.CompletableFuture;
1199+
1200+
public class Application {
1201+
public static void main(String[] args) {
1202+
// Custom HTTP client with custom configuration
1203+
HTTPClient customHttpClient = new HTTPClient() {
1204+
private final HttpClient client = HttpClient.newBuilder()
1205+
.executor(Executors.newFixedThreadPool(10))
1206+
.connectTimeout(Duration.ofSeconds(30))
1207+
// .sslContext(customSslContext) // Add custom SSL context if needed
1208+
.build();
1209+
1210+
@Override
1211+
public HttpResponse<InputStream> send(HttpRequest request) throws IOException, URISyntaxException, InterruptedException {
1212+
return client.send(request, HttpResponse.BodyHandlers.ofInputStream());
1213+
}
1214+
1215+
@Override
1216+
public CompletableFuture<HttpResponse<Blob>> sendAsync(HttpRequest request) {
1217+
// Convert response to HttpResponse<Blob> for async operations
1218+
return client.sendAsync(request, HttpResponse.BodyHandlers.ofPublisher())
1219+
.thenApply(resp -> new ResponseWithBody<>(resp, Blob::from));
1220+
}
1221+
};
1222+
1223+
StackOne sdk = StackOne.builder()
1224+
.client(customHttpClient)
1225+
.build();
1226+
}
1227+
}
1228+
```
1229+
1230+
</details>
1231+
1232+
You can also enable debug logging on the default `SpeakeasyHTTPClient`:
1233+
1234+
```java
1235+
import com.stackone.stackone_client_java.StackOne;
1236+
import com.stackone.stackone_client_java.utils.SpeakeasyHTTPClient;
1237+
1238+
public class Application {
1239+
public static void main(String[] args) {
1240+
SpeakeasyHTTPClient httpClient = new SpeakeasyHTTPClient();
1241+
httpClient.enableDebugLogging(true);
1242+
1243+
StackOne sdk = StackOne.builder()
1244+
.client(httpClient)
1245+
.build();
1246+
}
1247+
}
1248+
```
1249+
<!-- End Custom HTTP Client [http-client] -->
1250+
10881251
<!-- Start Debugging [debug] -->
10891252
## Debugging
10901253

β€ŽRELEASES.mdβ€Ž

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,4 +258,14 @@ Based on:
258258
### Generated
259259
- [java v0.14.3] .
260260
### Releases
261-
- [Maven Central v0.14.3] https://central.sonatype.com/artifact/com.stackone/stackone-client-java/0.14.3 - .
261+
- [Maven Central v0.14.3] https://central.sonatype.com/artifact/com.stackone/stackone-client-java/0.14.3 - .
262+
263+
## 2025-10-27 00:06:06
264+
### Changes
265+
Based on:
266+
- OpenAPI Doc
267+
- Speakeasy CLI 1.639.3 (2.730.5) https://github.com/speakeasy-api/speakeasy
268+
### Generated
269+
- [java v0.15.0] .
270+
### Releases
271+
- [Maven Central v0.15.0] https://central.sonatype.com/artifact/com.stackone/stackone-client-java/0.15.0 - .

β€ŽUSAGE.mdβ€Ž

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ public class Application {
2424

2525
HrisListEmployeesRequest req = HrisListEmployeesRequest.builder()
2626
.xAccountId("<id>")
27-
.fields("id,remote_id,first_name,last_name,name,display_name,gender,ethnicity,date_of_birth,birthday,marital_status,avatar_url,avatar,personal_email,personal_phone_number,work_email,work_phone_number,job_id,remote_job_id,job_title,job_description,department_id,remote_department_id,department,cost_centers,company,manager_id,remote_manager_id,hire_date,start_date,tenure,work_anniversary,employment_type,employment_contract_type,employment_status,termination_date,company_name,company_id,remote_company_id,preferred_language,citizenships,home_location,work_location,employments,custom_fields,created_at,updated_at,benefits,employee_number,national_identity_number,national_identity_numbers,skills,unified_custom_fields")
27+
.fields("id,remote_id,title,first_name,last_name,name,display_name,gender,ethnicity,date_of_birth,birthday,marital_status,avatar_url,avatar,personal_email,personal_phone_number,work_email,work_phone_number,job_id,remote_job_id,job_title,job_description,department_id,remote_department_id,department,cost_centers,company,manager_id,remote_manager_id,hire_date,start_date,tenure,work_anniversary,employment_type,employment_contract_type,employment_status,termination_date,company_name,company_id,remote_company_id,preferred_language,citizenships,home_location,work_location,employments,custom_fields,created_at,updated_at,benefits,employee_number,national_identity_number,national_identity_numbers,bank_details,skills,unified_custom_fields")
2828
.filter(HrisListEmployeesQueryParamFilter.builder()
2929
.updatedAfter(OffsetDateTime.parse("2020-01-01T00:00:00.000Z"))
3030
.build())
3131
.expand("company,employments,work_location,home_location,groups,skills")
32-
.include("avatar_url,avatar,custom_fields,job_description,benefits")
32+
.include("avatar_url,avatar,custom_fields,job_description,benefits,bank_details")
3333
.build();
3434

3535

β€Žbuild.gradleβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ dependencies {
8181
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.18.2'
8282
api('org.openapitools:jackson-databind-nullable:0.2.6') {exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind'}
8383
implementation 'commons-io:commons-io:2.18.0'
84+
implementation 'jakarta.annotation:jakarta.annotation-api:3.0.0'
8485
implementation 'com.jayway.jsonpath:json-path:2.9.0'
8586
api 'org.reactivestreams:reactive-streams:1.0.4'
8687
}

0 commit comments

Comments
Β (0)