diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index a730c8a..7bb8c51 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -45,7 +45,7 @@ jobs: ${{ runner.os }}-maven- - name: Build with Maven run: mvn -B package --file pom.xml -Dmaven.test.skip - - name: Run integration tests with Maven + - name: Run integration tests with API token auth if: ${{ github.repository_owner == 'onfido' && (github.event_name == 'pull_request' || github.event_name == 'release' || @@ -58,6 +58,20 @@ jobs: ONFIDO_SAMPLE_VIDEO_ID_2: ${{ secrets.ONFIDO_SAMPLE_VIDEO_ID_2 }} ONFIDO_SAMPLE_MOTION_ID_1: ${{ secrets.ONFIDO_SAMPLE_MOTION_ID_1 }} ONFIDO_SAMPLE_MOTION_ID_2: ${{ secrets.ONFIDO_SAMPLE_MOTION_ID_2 }} + - name: Run integration tests with OAuth client credentials auth + if: ${{ github.repository_owner == 'onfido' && + (github.event_name == 'pull_request' || + github.event_name == 'release' || + github.event_name == 'workflow_dispatch') }} + run: mvn test + env: + ONFIDO_OAUTH_CLIENT_ID: ${{ secrets.ONFIDO_OAUTH_CLIENT_ID }} + ONFIDO_OAUTH_CLIENT_SECRET: ${{ secrets.ONFIDO_OAUTH_CLIENT_SECRET }} + ONFIDO_SAMPLE_APPLICANT_ID: ${{ secrets.ONFIDO_SAMPLE_APPLICANT_ID }} + ONFIDO_SAMPLE_VIDEO_ID_1: ${{ secrets.ONFIDO_SAMPLE_VIDEO_ID_1 }} + ONFIDO_SAMPLE_VIDEO_ID_2: ${{ secrets.ONFIDO_SAMPLE_VIDEO_ID_2 }} + ONFIDO_SAMPLE_MOTION_ID_1: ${{ secrets.ONFIDO_SAMPLE_MOTION_ID_1 }} + ONFIDO_SAMPLE_MOTION_ID_2: ${{ secrets.ONFIDO_SAMPLE_MOTION_ID_2 }} publish: runs-on: ubuntu-latest diff --git a/.release.json b/.release.json index 682918b..441055b 100644 --- a/.release.json +++ b/.release.json @@ -1,9 +1,9 @@ { "source": { "repo_url": "https://github.com/onfido/onfido-openapi-spec", - "short_sha": "6a19890", - "long_sha": "6a198909828b3935c65b669e44cf2927e84957c0", - "version": "v6.0.1" + "short_sha": "6a36202", + "long_sha": "6a362029f0a58437e8be7185303ef14d3f342feb", + "version": "v6.1.0" }, - "release": "v7.1.0" + "release": "v7.2.0" } diff --git a/README.md b/README.md index a803a54..7b1bd08 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ Add this dependency to your project's POM: com.onfido onfido-api-java - 7.1.0 + 7.2.0 compile ``` @@ -66,7 +66,7 @@ Add this dependency to your project's build file: } dependencies { - implementation "com.onfido:onfido-api-java:7.1.0" + implementation "com.onfido:onfido-api-java:7.2.0" } ``` @@ -80,10 +80,10 @@ mvn clean package Then manually install the following JARs: -- `target/onfido-api-java-7.1.0.jar` +- `target/onfido-api-java-7.2.0.jar` - `target/lib/*.jar` -The latest version can be found at . +The latest version can be found at . ## Getting Started @@ -109,6 +109,20 @@ DefaultApi onfido = new DefaultApi(Configuration.getDefaultApiClient() .setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port)))); // Optionally define a connection proxy with the specified host and port ``` +You can also authenticate using OAuth2 client credentials instead of an API token: + +```java +DefaultApi onfido = new DefaultApi(Configuration.getDefaultApiClient() + .setOAuthCredentials(System.getenv("ONFIDO_OAUTH_CLIENT_ID"), + System.getenv("ONFIDO_OAUTH_CLIENT_SECRET")) + .setRegion(Region.EU) // Supports `EU`, `US` and `CA` + .setConnectTimeout(60_000) + .setReadTimeout(60_000)) + .setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port)))); // Optionally define a connection proxy with the specified host and port +``` + +The client will automatically exchange credentials for an access token and refresh it when it expires. + NB: By default, the connection and read timeout values are set to 30 seconds. You can adjust these values as shown in the configuration section. ### Making a call to the API diff --git a/build.gradle b/build.gradle index c807017..25435d6 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'java' apply plugin: 'com.diffplug.spotless' group = 'com.onfido' -version = '7.1.0' +version = '7.2.0' buildscript { repositories { @@ -113,6 +113,7 @@ dependencies { implementation 'io.gsonfire:gson-fire:1.9.0' implementation 'jakarta.ws.rs:jakarta.ws.rs-api:2.1.6' implementation 'org.openapitools:jackson-databind-nullable:0.2.7' + implementation group: 'org.apache.oltu.oauth2', name: 'org.apache.oltu.oauth2.client', version: '1.0.2' implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.18.0' implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version" testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3' diff --git a/build.sbt b/build.sbt index 453e70f..6bc3469 100644 --- a/build.sbt +++ b/build.sbt @@ -2,7 +2,7 @@ lazy val root = (project in file(".")). settings( organization := "com.onfido", name := "onfido-api-java", - version := "7.1.0", + version := "7.2.0", scalaVersion := "2.11.12", scalacOptions ++= Seq("-feature"), compile / javacOptions ++= Seq("-Xlint:deprecation"), @@ -16,6 +16,7 @@ lazy val root = (project in file(".")). "org.apache.commons" % "commons-lang3" % "3.18.0", "jakarta.ws.rs" % "jakarta.ws.rs-api" % "2.1.6", "org.openapitools" % "jackson-databind-nullable" % "0.2.7", + "org.apache.oltu.oauth2" % "org.apache.oltu.oauth2.client" % "1.0.2", "io.gsonfire" % "gson-fire" % "1.9.0" % "compile", "jakarta.annotation" % "jakarta.annotation-api" % "1.3.5" % "compile", "com.google.code.findbugs" % "jsr305" % "3.0.2" % "compile", diff --git a/pom.xml b/pom.xml index a99f280..0083c29 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ onfido-api-java jar onfido-api-java - 7.1.0 + 7.2.0 https://documentation.onfido.com Official Java API client library for the Onfido API @@ -296,6 +296,11 @@ gson-fire ${gson-fire-version} + + org.apache.oltu.oauth2 + org.apache.oltu.oauth2.client + 1.0.2 + org.apache.commons commons-lang3 diff --git a/src/main/java/com/onfido/ApiClient.java b/src/main/java/com/onfido/ApiClient.java index e883468..e8e6aea 100644 --- a/src/main/java/com/onfido/ApiClient.java +++ b/src/main/java/com/onfido/ApiClient.java @@ -21,6 +21,8 @@ import okio.Buffer; import okio.BufferedSink; import okio.Okio; +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder; +import org.apache.oltu.oauth2.common.message.types.GrantType; import javax.net.ssl.*; import java.io.File; @@ -57,6 +59,9 @@ import com.onfido.auth.HttpBasicAuth; import com.onfido.auth.HttpBearerAuth; import com.onfido.auth.ApiKeyAuth; +import com.onfido.auth.OAuth; +import com.onfido.auth.RetryingOAuth; +import com.onfido.auth.OAuthFlow; /** *

ApiClient class.

@@ -106,6 +111,11 @@ public class ApiClient { protected HttpLoggingInterceptor loggingInterceptor; + private String oauthClientId; + private String oauthClientSecret; + private volatile String oauthAccessToken; + private volatile long oauthTokenExpiresAt; + public enum Region { EU, @@ -122,6 +132,7 @@ public ApiClient() { // Setup authentications (key: authentication name, value: authentication). authentications.put("Token", new ApiKeyAuth("header", "Authorization")); + authentications.put("OAuth2ClientCredentials", new OAuth()); // Prevent the authentications from being modified. authentications = Collections.unmodifiableMap(authentications); } @@ -138,6 +149,74 @@ public ApiClient(OkHttpClient client) { // Setup authentications (key: authentication name, value: authentication). authentications.put("Token", new ApiKeyAuth("header", "Authorization")); + authentications.put("OAuth2ClientCredentials", new OAuth()); + // Prevent the authentications from being modified. + authentications = Collections.unmodifiableMap(authentications); + } + + /** + * Constructor for ApiClient to support access token retry on 401/403 configured with client ID + * + * @param clientId client ID + */ + public ApiClient(String clientId) { + this(clientId, null, null); + } + + /** + * Constructor for ApiClient to support access token retry on 401/403 configured with client ID and additional parameters + * + * @param clientId client ID + * @param parameters a {@link java.util.Map} of parameters + */ + public ApiClient(String clientId, Map parameters) { + this(clientId, null, parameters); + } + + /** + * Constructor for ApiClient to support access token retry on 401/403 configured with client ID, secret, and additional parameters + * + * @param clientId client ID + * @param clientSecret client secret + * @param parameters a {@link java.util.Map} of parameters + */ + public ApiClient(String clientId, String clientSecret, Map parameters) { + this(null, clientId, clientSecret, parameters); + } + + /** + * Constructor for ApiClient to support access token retry on 401/403 configured with base path, client ID, secret, and additional parameters + * + * @param basePath base path + * @param clientId client ID + * @param clientSecret client secret + * @param parameters a {@link java.util.Map} of parameters + */ + public ApiClient(String basePath, String clientId, String clientSecret, Map parameters) { + init(); + if (basePath != null) { + this.basePath = basePath; + } + + String tokenUrl = "https://api.{region}.onfido.com/v3.6/oauth/token"; + if (!"".equals(tokenUrl) && !URI.create(tokenUrl).isAbsolute()) { + URI uri = URI.create(getBasePath()); + tokenUrl = uri.getScheme() + ":" + + (uri.getAuthority() != null ? "//" + uri.getAuthority() : "") + + tokenUrl; + if (!URI.create(tokenUrl).isAbsolute()) { + throw new IllegalArgumentException("OAuth2 token URL must be an absolute URL"); + } + } + RetryingOAuth retryingOAuth = new RetryingOAuth(tokenUrl, clientId, OAuthFlow.APPLICATION, clientSecret, parameters); + authentications.put( + "OAuth2ClientCredentials", + retryingOAuth + ); + initHttpClient(Collections.singletonList(retryingOAuth)); + // Setup authentications (key: authentication name, value: authentication). + authentications.put("Token", new ApiKeyAuth("header", "Authorization")); + // Prevent the authentications from being modified. authentications = Collections.unmodifiableMap(authentications); } @@ -162,7 +241,7 @@ protected void init() { json = new JSON(); // Set default User-Agent. - setUserAgent("onfido-java/7.1.0"); + setUserAgent("onfido-java/7.2.0"); authentications = new HashMap(); } @@ -418,6 +497,9 @@ protected void setApiKey(String apiKey) { * @return Api client */ public ApiClient setApiToken(String apiToken) { + if (this.oauthClientId != null) { + throw new IllegalStateException("Cannot set API token when OAuth credentials are already configured"); + } this.setApiKey("Token token=" + apiToken); return this; @@ -442,6 +524,83 @@ public ApiClient setRegion(Region region) { return this; } + /** + * Sets OAuth2 client credentials for authentication. + * The client will automatically exchange credentials for an access token + * and refresh it when expired. This is mutually exclusive with setApiToken. + * + * @param clientId OAuth2 client ID + * @param clientSecret OAuth2 client secret + * @return Api client + */ + public ApiClient setOAuthCredentials(String clientId, String clientSecret) { + if (clientId == null || clientId.isEmpty()) { + throw new IllegalArgumentException("OAuth client ID must not be null or empty"); + } + if (clientSecret == null || clientSecret.isEmpty()) { + throw new IllegalArgumentException("OAuth client secret must not be null or empty"); + } + Authentication existingAuth = this.authentications.get("Token"); + if (existingAuth instanceof ApiKeyAuth && ((ApiKeyAuth) existingAuth).getApiKey() != null) { + throw new IllegalStateException("Cannot set OAuth credentials when API token is already configured"); + } + + this.oauthClientId = clientId; + this.oauthClientSecret = clientSecret; + this.oauthAccessToken = null; + this.oauthTokenExpiresAt = 0; + + HttpBearerAuth bearerAuth = new HttpBearerAuth("Bearer"); + bearerAuth.setBearerToken(() -> getOAuthAccessToken()); + + Map newAuth = new HashMap<>(this.authentications); + newAuth.put("Token", bearerAuth); + this.authentications = Collections.unmodifiableMap(newAuth); + + return this; + } + + private String getEffectiveBasePath() { + if (serverIndex != null && serverIndex >= 0 && serverIndex < servers.size()) { + return servers.get(serverIndex).URL(serverVariables); + } + return basePath; + } + + private synchronized String getOAuthAccessToken() { + if (oauthAccessToken != null && System.currentTimeMillis() < oauthTokenExpiresAt) { + return oauthAccessToken; + } + + String tokenUrl = getEffectiveBasePath() + "/oauth/token"; + + RequestBody body = new FormBody.Builder() + .add("client_id", oauthClientId) + .add("client_secret", oauthClientSecret) + .build(); + + Request request = new Request.Builder() + .url(tokenUrl) + .post(body) + .build(); + + try (Response response = httpClient.newCall(request).execute()) { + if (!response.isSuccessful()) { + throw new RuntimeException("OAuth token exchange failed with status " + response.code()); + } + + String responseBody = response.body().string(); + com.google.gson.JsonObject jsonResponse = com.google.gson.JsonParser.parseString(responseBody).getAsJsonObject(); + oauthAccessToken = jsonResponse.get("access_token").getAsString(); + long expiresIn = jsonResponse.get("expires_in").getAsLong(); + oauthTokenExpiresAt = System.currentTimeMillis() + (expiresIn - 30) * 1000; + + return oauthAccessToken; + } catch (IOException e) { + throw new RuntimeException("Failed to exchange OAuth credentials for access token", e); + } + } + /** * Return the HTTP proxy used by connections. * @@ -469,6 +628,12 @@ public ApiClient setProxy(Proxy proxy) { * @param accessToken Access token */ public void setAccessToken(String accessToken) { + for (Authentication auth : authentications.values()) { + if (auth instanceof OAuth) { + ((OAuth) auth).setAccessToken(accessToken); + return; + } + } throw new RuntimeException("No OAuth2 authentication configured!"); } @@ -653,6 +818,20 @@ public ApiClient setWriteTimeout(int writeTimeout) { return this; } + /** + * Helper method to configure the token endpoint of the first oauth found in the apiAuthorizations (there should be only one) + * + * @return Token request builder + */ + public TokenRequestBuilder getTokenEndPoint() { + for (Authentication apiAuth : authentications.values()) { + if (apiAuth instanceof RetryingOAuth) { + RetryingOAuth retryingOAuth = (RetryingOAuth) apiAuth; + return retryingOAuth.getTokenRequestBuilder(); + } + } + return null; + } /** * Format the given parameter object into string. diff --git a/src/main/java/com/onfido/Configuration.java b/src/main/java/com/onfido/Configuration.java index d8c49ab..ea155b2 100644 --- a/src/main/java/com/onfido/Configuration.java +++ b/src/main/java/com/onfido/Configuration.java @@ -19,7 +19,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.16.0") public class Configuration { - public static final String VERSION = "7.1.0"; + public static final String VERSION = "7.2.0"; private static final AtomicReference defaultApiClient = new AtomicReference<>(); private static volatile Supplier apiClientFactory = ApiClient::new; diff --git a/src/main/java/com/onfido/api/DefaultApi.java b/src/main/java/com/onfido/api/DefaultApi.java index 74a0b66..6b5c85e 100644 --- a/src/main/java/com/onfido/api/DefaultApi.java +++ b/src/main/java/com/onfido/api/DefaultApi.java @@ -170,7 +170,7 @@ private okhttp3.Call cancelReportCall(@javax.annotation.Nonnull UUID reportId, f localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -331,7 +331,7 @@ private okhttp3.Call completeTaskCall(@javax.annotation.Nonnull UUID workflowRun localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -508,7 +508,7 @@ private okhttp3.Call createApplicantCall(@javax.annotation.Nonnull ApplicantBuil localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -671,7 +671,7 @@ private okhttp3.Call createCheckCall(@javax.annotation.Nonnull CheckBuilder chec localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -834,7 +834,7 @@ private okhttp3.Call createTimelineFileCall(@javax.annotation.Nonnull UUID workf localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -997,7 +997,7 @@ private okhttp3.Call createWatchlistMonitorCall(@javax.annotation.Nonnull Watchl localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1160,7 +1160,7 @@ private okhttp3.Call createWebhookCall(@javax.annotation.Nonnull WebhookBuilder localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1323,7 +1323,7 @@ private okhttp3.Call createWorkflowRunCall(@javax.annotation.Nonnull WorkflowRun localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1486,7 +1486,7 @@ private okhttp3.Call deleteApplicantCall(@javax.annotation.Nonnull UUID applican localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1646,7 +1646,7 @@ private okhttp3.Call deletePasskeyCall(@javax.annotation.Nonnull String username localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1819,7 +1819,7 @@ private okhttp3.Call deletePasskeysCall(@javax.annotation.Nonnull String usernam localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1983,7 +1983,7 @@ private okhttp3.Call deleteWatchlistMonitorCall(@javax.annotation.Nonnull UUID m localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -2142,7 +2142,7 @@ private okhttp3.Call deleteWebhookCall(@javax.annotation.Nonnull UUID webhookId, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -2309,7 +2309,7 @@ private okhttp3.Call downloadAesDocumentCall(@javax.annotation.Nonnull UUID work localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -2487,7 +2487,7 @@ private okhttp3.Call downloadCheckCall(@javax.annotation.Nonnull UUID checkId, f localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -2651,7 +2651,7 @@ private okhttp3.Call downloadDocumentCall(@javax.annotation.Nonnull UUID documen localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -2815,7 +2815,7 @@ private okhttp3.Call downloadDocumentVideoCall(@javax.annotation.Nonnull String localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -2979,7 +2979,7 @@ private okhttp3.Call downloadEvidenceFolderCall(@javax.annotation.Nonnull UUID w localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -3148,7 +3148,7 @@ private okhttp3.Call downloadIdPhotoCall(@javax.annotation.Nonnull UUID idPhotoI localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -3312,7 +3312,7 @@ private okhttp3.Call downloadLivePhotoCall(@javax.annotation.Nonnull UUID livePh localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -3476,7 +3476,7 @@ private okhttp3.Call downloadLiveVideoCall(@javax.annotation.Nonnull UUID liveVi localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -3640,7 +3640,7 @@ private okhttp3.Call downloadLiveVideoFrameCall(@javax.annotation.Nonnull UUID l localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -3804,7 +3804,7 @@ private okhttp3.Call downloadMotionCaptureCall(@javax.annotation.Nonnull UUID mo localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -3968,7 +3968,7 @@ private okhttp3.Call downloadMotionCaptureFrameCall(@javax.annotation.Nonnull UU localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -4132,7 +4132,7 @@ private okhttp3.Call downloadNfcFaceCall(@javax.annotation.Nonnull UUID document localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -4303,7 +4303,7 @@ private okhttp3.Call downloadQesDocumentCall(@javax.annotation.Nonnull UUID work localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -4488,7 +4488,7 @@ private okhttp3.Call downloadSesDocumentCall(@javax.annotation.Nonnull UUID work localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -4666,7 +4666,7 @@ private okhttp3.Call downloadSignedEvidenceFileCall(@javax.annotation.Nonnull UU localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -4835,7 +4835,7 @@ private okhttp3.Call downloadSigningDocumentCall(@javax.annotation.Nonnull UUID localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -4998,7 +4998,7 @@ private okhttp3.Call extractCall(@javax.annotation.Nonnull ExtractRequest extrac localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -5164,7 +5164,7 @@ private okhttp3.Call findAddressesCall(@javax.annotation.Nonnull String postcode localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -5327,7 +5327,7 @@ private okhttp3.Call findApplicantCall(@javax.annotation.Nonnull UUID applicantI localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -5490,7 +5490,7 @@ private okhttp3.Call findApplicantConsentsCall(@javax.annotation.Nonnull UUID ap localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -5653,7 +5653,7 @@ private okhttp3.Call findCheckCall(@javax.annotation.Nonnull UUID checkId, final localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -5816,7 +5816,7 @@ private okhttp3.Call findDocumentCall(@javax.annotation.Nonnull UUID documentId, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -5979,7 +5979,7 @@ private okhttp3.Call findIdPhotoCall(@javax.annotation.Nonnull UUID idPhotoId, f localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -6142,7 +6142,7 @@ private okhttp3.Call findLivePhotoCall(@javax.annotation.Nonnull UUID livePhotoI localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -6305,7 +6305,7 @@ private okhttp3.Call findLiveVideoCall(@javax.annotation.Nonnull UUID liveVideoI localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -6468,7 +6468,7 @@ private okhttp3.Call findMotionCaptureCall(@javax.annotation.Nonnull UUID motion localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -6632,7 +6632,7 @@ private okhttp3.Call findPasskeyCall(@javax.annotation.Nonnull String username, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -6809,7 +6809,7 @@ private okhttp3.Call findReportCall(@javax.annotation.Nonnull UUID reportId, fin localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -6972,7 +6972,7 @@ private okhttp3.Call findSigningDocumentCall(@javax.annotation.Nonnull UUID sign localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -7136,7 +7136,7 @@ private okhttp3.Call findTaskCall(@javax.annotation.Nonnull UUID workflowRunId, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -7310,7 +7310,7 @@ private okhttp3.Call findTimelineFileCall(@javax.annotation.Nonnull UUID workflo localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -7487,7 +7487,7 @@ private okhttp3.Call findWatchlistMonitorCall(@javax.annotation.Nonnull UUID mon localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -7650,7 +7650,7 @@ private okhttp3.Call findWebhookCall(@javax.annotation.Nonnull UUID webhookId, f localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -7813,7 +7813,7 @@ private okhttp3.Call findWorkflowRunCall(@javax.annotation.Nonnull UUID workflow localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -7976,7 +7976,7 @@ private okhttp3.Call forceReportCreationFromWatchlistMonitorCall(@javax.annotati localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -8135,7 +8135,7 @@ private okhttp3.Call generateSdkTokenCall(@javax.annotation.Nonnull SdkTokenBuil localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -8309,7 +8309,7 @@ private okhttp3.Call listApplicantsCall(@javax.annotation.Nullable Integer page, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -8502,7 +8502,7 @@ private okhttp3.Call listChecksCall(@javax.annotation.Nonnull UUID applicantId, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -8668,7 +8668,7 @@ private okhttp3.Call listDocumentsCall(@javax.annotation.Nonnull UUID applicantI localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -8834,7 +8834,7 @@ private okhttp3.Call listIdPhotosCall(@javax.annotation.Nonnull UUID applicantId localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -9000,7 +9000,7 @@ private okhttp3.Call listLivePhotosCall(@javax.annotation.Nonnull UUID applicant localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -9166,7 +9166,7 @@ private okhttp3.Call listLiveVideosCall(@javax.annotation.Nonnull UUID applicant localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -9332,7 +9332,7 @@ private okhttp3.Call listMotionCapturesCall(@javax.annotation.Nonnull UUID appli localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -9495,7 +9495,7 @@ private okhttp3.Call listPasskeysCall(@javax.annotation.Nonnull String username, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -9663,7 +9663,7 @@ private okhttp3.Call listRepeatAttemptsCall(@javax.annotation.Nonnull UUID repor localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -9829,7 +9829,7 @@ private okhttp3.Call listReportsCall(@javax.annotation.Nonnull UUID checkId, fin localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -9995,7 +9995,7 @@ private okhttp3.Call listSigningDocumentsCall(@javax.annotation.Nonnull UUID app localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -10158,7 +10158,7 @@ private okhttp3.Call listTasksCall(@javax.annotation.Nonnull UUID workflowRunId, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -10321,7 +10321,7 @@ private okhttp3.Call listWatchlistMonitorMatchesCall(@javax.annotation.Nonnull U localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -10486,7 +10486,7 @@ private okhttp3.Call listWatchlistMonitorsCall(@javax.annotation.Nonnull UUID ap localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -10660,7 +10660,7 @@ private okhttp3.Call listWebhooksCall(final ApiCallback _callback) throws ApiExc localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -10841,7 +10841,7 @@ private okhttp3.Call listWorkflowRunsCall(@javax.annotation.Nullable Integer pag localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -11079,7 +11079,7 @@ private okhttp3.Call pingCall(final ApiCallback _callback) throws ApiException { localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -11233,7 +11233,7 @@ private okhttp3.Call postResultsFeedbackCall(@javax.annotation.Nonnull ResultsFe localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -11396,7 +11396,7 @@ private okhttp3.Call resendWebhooksCall(@javax.annotation.Nonnull WebhookResend localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -11560,7 +11560,7 @@ private okhttp3.Call restoreApplicantCall(@javax.annotation.Nonnull UUID applica localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -11719,7 +11719,7 @@ private okhttp3.Call resumeCheckCall(@javax.annotation.Nonnull UUID checkId, fin localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -11878,7 +11878,7 @@ private okhttp3.Call resumeReportCall(@javax.annotation.Nonnull UUID reportId, f localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -12038,7 +12038,7 @@ private okhttp3.Call updateApplicantCall(@javax.annotation.Nonnull UUID applican localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -12212,7 +12212,7 @@ private okhttp3.Call updatePasskeyCall(@javax.annotation.Nonnull String username localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -12404,7 +12404,7 @@ private okhttp3.Call updateWatchlistMonitorMatchCall(@javax.annotation.Nonnull U localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "PATCH", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -12577,7 +12577,7 @@ private okhttp3.Call updateWebhookCall(@javax.annotation.Nonnull UUID webhookId, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -12781,7 +12781,7 @@ private okhttp3.Call uploadDocumentCall(@javax.annotation.Nonnull DocumentTypes localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -13030,7 +13030,7 @@ private okhttp3.Call uploadIdPhotoCall(@javax.annotation.Nullable UUID applicant localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -13220,7 +13220,7 @@ private okhttp3.Call uploadLivePhotoCall(@javax.annotation.Nullable UUID applica localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -13418,7 +13418,7 @@ private okhttp3.Call uploadSigningDocumentCall(@javax.annotation.Nonnull UUID ap localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Token" }; + String[] localVarAuthNames = new String[] { "OAuth2ClientCredentials", "Token" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/onfido/auth/OAuth.java b/src/main/java/com/onfido/auth/OAuth.java new file mode 100644 index 0000000..c61ce84 --- /dev/null +++ b/src/main/java/com/onfido/auth/OAuth.java @@ -0,0 +1,42 @@ +/* + * Onfido Public API v3.6 + * The Onfido Public API (v3.6) + * + * The version of the OpenAPI document: v3.6 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.onfido.auth; + +import com.onfido.Pair; +import com.onfido.ApiException; + +import java.net.URI; +import java.util.Map; +import java.util.List; + +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.16.0") +public class OAuth implements Authentication { + private String accessToken; + + public String getAccessToken() { + return accessToken; + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + } + + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + if (accessToken != null) { + headerParams.put("Authorization", "Bearer " + accessToken); + } + } +} diff --git a/src/main/java/com/onfido/auth/OAuthFlow.java b/src/main/java/com/onfido/auth/OAuthFlow.java new file mode 100644 index 0000000..f408af2 --- /dev/null +++ b/src/main/java/com/onfido/auth/OAuthFlow.java @@ -0,0 +1,25 @@ +/* + * Onfido Public API v3.6 + * The Onfido Public API (v3.6) + * + * The version of the OpenAPI document: v3.6 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.onfido.auth; + +/** + * OAuth flows that are supported by this client + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.16.0") +public enum OAuthFlow { + ACCESS_CODE, //called authorizationCode in OpenAPI 3.0 + IMPLICIT, + PASSWORD, + APPLICATION //called clientCredentials in OpenAPI 3.0 +} diff --git a/src/main/java/com/onfido/auth/OAuthOkHttpClient.java b/src/main/java/com/onfido/auth/OAuthOkHttpClient.java new file mode 100644 index 0000000..a5309b8 --- /dev/null +++ b/src/main/java/com/onfido/auth/OAuthOkHttpClient.java @@ -0,0 +1,82 @@ +/* + * Onfido Public API v3.6 + * The Onfido Public API (v3.6) + * + * The version of the OpenAPI document: v3.6 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.onfido.auth; + +import okhttp3.OkHttpClient; +import okhttp3.MediaType; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +import org.apache.oltu.oauth2.client.HttpClient; +import org.apache.oltu.oauth2.client.request.OAuthClientRequest; +import org.apache.oltu.oauth2.client.response.OAuthClientResponse; +import org.apache.oltu.oauth2.client.response.OAuthClientResponseFactory; +import org.apache.oltu.oauth2.common.exception.OAuthProblemException; +import org.apache.oltu.oauth2.common.exception.OAuthSystemException; + +import java.io.IOException; +import java.util.Map; +import java.util.Map.Entry; + +public class OAuthOkHttpClient implements HttpClient { + private OkHttpClient client; + + public OAuthOkHttpClient() { + this.client = new OkHttpClient(); + } + + public OAuthOkHttpClient(OkHttpClient client) { + this.client = client; + } + + @Override + public T execute(OAuthClientRequest request, Map headers, + String requestMethod, Class responseClass) + throws OAuthSystemException, OAuthProblemException { + + MediaType mediaType = MediaType.parse("application/json"); + Request.Builder requestBuilder = new Request.Builder().url(request.getLocationUri()); + + if(headers != null) { + for (Entry entry : headers.entrySet()) { + if (entry.getKey().equalsIgnoreCase("Content-Type")) { + mediaType = MediaType.parse(entry.getValue()); + } else { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + } + } + + RequestBody body = request.getBody() != null ? RequestBody.create(request.getBody(), mediaType) : null; + requestBuilder.method(requestMethod, body); + + try { + Response response = client.newCall(requestBuilder.build()).execute(); + return OAuthClientResponseFactory.createCustomResponse( + response.body().string(), + response.body().contentType().toString(), + response.code(), + response.headers().toMultimap(), + responseClass); + } catch (IOException e) { + throw new OAuthSystemException(e); + } + } + + @Override + public void shutdown() { + // Nothing to do here + } +} diff --git a/src/main/java/com/onfido/auth/RetryingOAuth.java b/src/main/java/com/onfido/auth/RetryingOAuth.java new file mode 100644 index 0000000..e3e5a86 --- /dev/null +++ b/src/main/java/com/onfido/auth/RetryingOAuth.java @@ -0,0 +1,223 @@ +/* + * Onfido Public API v3.6 + * The Onfido Public API (v3.6) + * + * The version of the OpenAPI document: v3.6 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.onfido.auth; + +import com.onfido.ApiException; +import com.onfido.Pair; + +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +import org.apache.oltu.oauth2.client.OAuthClient; +import org.apache.oltu.oauth2.client.request.OAuthBearerClientRequest; +import org.apache.oltu.oauth2.client.request.OAuthClientRequest; +import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuilder; +import org.apache.oltu.oauth2.client.response.OAuthJSONAccessTokenResponse; +import org.apache.oltu.oauth2.common.exception.OAuthProblemException; +import org.apache.oltu.oauth2.common.exception.OAuthSystemException; +import org.apache.oltu.oauth2.common.message.types.GrantType; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URI; +import java.util.Map; +import java.util.List; + +public class RetryingOAuth extends OAuth implements Interceptor { + private OAuthClient oAuthClient; + + private TokenRequestBuilder tokenRequestBuilder; + + /** + * @param client An OkHttp client + * @param tokenRequestBuilder A token request builder + */ + public RetryingOAuth(OkHttpClient client, TokenRequestBuilder tokenRequestBuilder) { + this.oAuthClient = new OAuthClient(new OAuthOkHttpClient(client)); + this.tokenRequestBuilder = tokenRequestBuilder; + } + + /** + * @param tokenRequestBuilder A token request builder + */ + public RetryingOAuth(TokenRequestBuilder tokenRequestBuilder) { + this(new OkHttpClient(), tokenRequestBuilder); + } + + /** + * @param tokenUrl The token URL to be used for this OAuth2 flow. + * Applicable to the following OAuth2 flows: "password", "clientCredentials" and "authorizationCode". + * The value must be an absolute URL. + * @param clientId The OAuth2 client ID for the "clientCredentials" flow. + * @param flow OAuth flow. + * @param clientSecret The OAuth2 client secret for the "clientCredentials" flow. + * @param parameters A map of string. + */ + public RetryingOAuth( + String tokenUrl, + String clientId, + OAuthFlow flow, + String clientSecret, + Map parameters + ) { + this(OAuthClientRequest.tokenLocation(tokenUrl) + .setClientId(clientId) + .setClientSecret(clientSecret)); + setFlow(flow); + if (parameters != null) { + for (Map.Entry entry : parameters.entrySet()) { + tokenRequestBuilder.setParameter(entry.getKey(), entry.getValue()); + } + } + } + + /** + * Set the OAuth flow + * + * @param flow The OAuth flow. + */ + public void setFlow(OAuthFlow flow) { + switch(flow) { + case ACCESS_CODE: + tokenRequestBuilder.setGrantType(GrantType.AUTHORIZATION_CODE); + break; + case IMPLICIT: + tokenRequestBuilder.setGrantType(GrantType.IMPLICIT); + break; + case PASSWORD: + tokenRequestBuilder.setGrantType(GrantType.PASSWORD); + break; + case APPLICATION: + tokenRequestBuilder.setGrantType(GrantType.CLIENT_CREDENTIALS); + break; + default: + break; + } + } + + @Override + public Response intercept(Chain chain) throws IOException { + return retryingIntercept(chain, true); + } + + private Response retryingIntercept(Chain chain, boolean updateTokenAndRetryOnAuthorizationFailure) throws IOException { + Request request = chain.request(); + + // If the request already has an authorization (e.g. Basic auth), proceed with the request as is + if (request.header("Authorization") != null) { + return chain.proceed(request); + } + + // Get the token if it has not yet been acquired + if (getAccessToken() == null) { + updateAccessToken(null); + } + + OAuthClientRequest oAuthRequest; + if (getAccessToken() != null) { + // Build the request + Request.Builder requestBuilder = request.newBuilder(); + + String requestAccessToken = getAccessToken(); + try { + oAuthRequest = + new OAuthBearerClientRequest(request.url().toString()). + setAccessToken(requestAccessToken). + buildHeaderMessage(); + } catch (OAuthSystemException e) { + throw new IOException(e); + } + + Map headers = oAuthRequest.getHeaders(); + for (Map.Entry entry : headers.entrySet()) { + requestBuilder.addHeader(entry.getKey(), entry.getValue()); + } + requestBuilder.url(oAuthRequest.getLocationUri()); + + // Execute the request + Response response = chain.proceed(requestBuilder.build()); + + // 401/403 response codes most likely indicate an expired access token, unless it happens two times in a row + if ( + response != null && + ( response.code() == HttpURLConnection.HTTP_UNAUTHORIZED || + response.code() == HttpURLConnection.HTTP_FORBIDDEN ) && + updateTokenAndRetryOnAuthorizationFailure + ) { + try { + if (updateAccessToken(requestAccessToken)) { + response.body().close(); + return retryingIntercept(chain, false); + } + } catch (Exception e) { + response.body().close(); + throw e; + } + } + return response; + } + else { + return chain.proceed(chain.request()); + } + } + + /** + * Returns true if the access token has been updated + * + * @param requestAccessToken the request access token + * @return True if the update is successful + * @throws java.io.IOException If fail to update the access token + */ + public synchronized boolean updateAccessToken(String requestAccessToken) throws IOException { + if (getAccessToken() == null || getAccessToken().equals(requestAccessToken)) { + try { + OAuthJSONAccessTokenResponse accessTokenResponse = + oAuthClient.accessToken(tokenRequestBuilder.buildBodyMessage()); + if (accessTokenResponse != null && accessTokenResponse.getAccessToken() != null) { + setAccessToken(accessTokenResponse.getAccessToken()); + } + } catch (OAuthSystemException | OAuthProblemException e) { + throw new IOException(e); + } + } + return getAccessToken() == null || !getAccessToken().equals(requestAccessToken); + } + + /** + * Gets the token request builder + * + * @return A token request builder + */ + public TokenRequestBuilder getTokenRequestBuilder() { + return tokenRequestBuilder; + } + + /** + * Sets the token request builder + * + * @param tokenRequestBuilder Token request builder + */ + public void setTokenRequestBuilder(TokenRequestBuilder tokenRequestBuilder) { + this.tokenRequestBuilder = tokenRequestBuilder; + } + + // Applying authorization to parameters is performed in the retryingIntercept method + @Override + public void applyToParams(List queryParams, Map headerParams, Map cookieParams, + String payload, String method, URI uri) throws ApiException { + // No implementation necessary + } +} diff --git a/src/test/java/com/onfido/integration/TestBase.java b/src/test/java/com/onfido/integration/TestBase.java index 9c752d5..1d0096e 100644 --- a/src/test/java/com/onfido/integration/TestBase.java +++ b/src/test/java/com/onfido/integration/TestBase.java @@ -1,5 +1,6 @@ package com.onfido.integration; +import com.onfido.ApiClient; import com.onfido.ApiException; import com.onfido.Configuration; import com.onfido.FileTransfer; @@ -21,6 +22,9 @@ public class TestBase { private static final String apiToken = System.getenv("ONFIDO_API_TOKEN"); + private static final String oauthClientId = System.getenv("ONFIDO_OAUTH_CLIENT_ID"); + private static final String oauthClientSecret = System.getenv("ONFIDO_OAUTH_CLIENT_SECRET"); + private static final String basePath = System.getenv("ONFIDO_BASE_PATH"); protected static final UUID sampleApplicantId = UUID.fromString(System.getenv("ONFIDO_SAMPLE_APPLICANT_ID")); @@ -33,13 +37,21 @@ public class TestBase { protected DefaultApi onfido; public TestBase() { - onfido = - new DefaultApi( - Configuration.getDefaultApiClient() - .setApiToken(apiToken) - .setConnectTimeout(60_000) - .setReadTimeout(60_000) - .setWriteTimeout(60_000)); + ApiClient client = Configuration.getDefaultApiClient(); + + if (oauthClientId != null && !oauthClientId.isEmpty()) { + client.setOAuthCredentials(oauthClientId, oauthClientSecret); + } else { + client.setApiToken(apiToken); + } + + if (basePath != null && !basePath.isEmpty()) { + client.setBasePath(basePath); + } + + client.setConnectTimeout(60_000).setReadTimeout(60_000).setWriteTimeout(60_000); + + onfido = new DefaultApi(client); } @AfterAll