diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index a1c64a70..52345def 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -205,6 +205,10 @@ src/main/java/com/bandwidth/sdk/auth/ApiKeyAuth.java src/main/java/com/bandwidth/sdk/auth/Authentication.java src/main/java/com/bandwidth/sdk/auth/HttpBasicAuth.java src/main/java/com/bandwidth/sdk/auth/HttpBearerAuth.java +src/main/java/com/bandwidth/sdk/auth/OAuth.java +src/main/java/com/bandwidth/sdk/auth/OAuthFlow.java +src/main/java/com/bandwidth/sdk/auth/OAuthOkHttpClient.java +src/main/java/com/bandwidth/sdk/auth/RetryingOAuth.java src/main/java/com/bandwidth/sdk/model/AbstractOpenApiSchema.java src/main/java/com/bandwidth/sdk/model/AccountStatistics.java src/main/java/com/bandwidth/sdk/model/AdditionalDenialReason.java diff --git a/README.md b/README.md index 12354201..192f7fef 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + CallsApi apiInstance = new CallsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. CreateCall createCall = new CreateCall(); // CreateCall | JSON object containing information to create an outbound call @@ -341,6 +345,14 @@ Authentication schemes defined for the API: - **Type**: HTTP basic authentication + +### OAuth2 + +- **Type**: OAuth +- **Flow**: application +- **Authorization URL**: +- **Scopes**: N/A + ## Recommendation diff --git a/api/openapi.yaml b/api/openapi.yaml index 70da3894..9c7c46f5 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -11,6 +11,7 @@ servers: - url: / security: - Basic: [] +- OAuth2: [] tags: - name: Messages - name: Media @@ -14434,4 +14435,10 @@ components: - Example: `Authorization: Basic ZGVtbZpwQDU1dzByZA==` scheme: basic type: http + OAuth2: + flows: + clientCredentials: + scopes: {} + tokenUrl: https://api.bandwidth.com/api/v1/oauth2/token + type: oauth2 diff --git a/bandwidth.yml b/bandwidth.yml index bf2c9ab0..75a24e3a 100644 --- a/bandwidth.yml +++ b/bandwidth.yml @@ -9,6 +9,7 @@ info: version: 1.0.0 security: - Basic: [] + - OAuth2: [] tags: - name: Messages - name: Media @@ -8097,6 +8098,12 @@ components: - Example: `Authorization: Basic ZGVtbZpwQDU1dzByZA==` + OAuth2: + type: oauth2 + flows: + clientCredentials: + tokenUrl: https://api.bandwidth.com/api/v1/oauth2/token + scopes: {} callbacks: inboundCallback: '{inboundCallbackUrl}': diff --git a/build.gradle b/build.gradle index 315cc285..02579df4 100644 --- a/build.gradle +++ b/build.gradle @@ -114,6 +114,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.6' + 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.17.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 5ddc6450..2711b389 100644 --- a/build.sbt +++ b/build.sbt @@ -16,6 +16,7 @@ lazy val root = (project in file(".")). "org.apache.commons" % "commons-lang3" % "3.17.0", "jakarta.ws.rs" % "jakarta.ws.rs-api" % "2.1.6", "org.openapitools" % "jackson-databind-nullable" % "0.2.6", + "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/docs/CallsApi.md b/docs/CallsApi.md index 19512af8..2e9fd55f 100644 --- a/docs/CallsApi.md +++ b/docs/CallsApi.md @@ -39,6 +39,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + CallsApi apiInstance = new CallsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. CreateCall createCall = new CreateCall(); // CreateCall | JSON object containing information to create an outbound call @@ -69,7 +73,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -117,6 +121,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + CallsApi apiInstance = new CallsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -147,7 +155,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -195,6 +203,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + CallsApi apiInstance = new CallsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String to = "%2b19195551234"; // String | Filter results by the `to` field. @@ -237,7 +249,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -285,6 +297,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + CallsApi apiInstance = new CallsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -316,7 +332,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -365,6 +381,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + CallsApi apiInstance = new CallsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -399,7 +419,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/ConferencesApi.md b/docs/ConferencesApi.md index 74750e16..65124019 100644 --- a/docs/ConferencesApi.md +++ b/docs/ConferencesApi.md @@ -43,6 +43,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + ConferencesApi apiInstance = new ConferencesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String conferenceId = "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"; // String | Programmable Voice API Conference ID. @@ -75,7 +79,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -123,6 +127,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + ConferencesApi apiInstance = new ConferencesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String conferenceId = "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"; // String | Programmable Voice API Conference ID. @@ -153,7 +161,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -201,6 +209,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + ConferencesApi apiInstance = new ConferencesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String conferenceId = "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"; // String | Programmable Voice API Conference ID. @@ -233,7 +245,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -281,6 +293,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + ConferencesApi apiInstance = new ConferencesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String conferenceId = "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"; // String | Programmable Voice API Conference ID. @@ -313,7 +329,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -361,6 +377,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + ConferencesApi apiInstance = new ConferencesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String conferenceId = "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"; // String | Programmable Voice API Conference ID. @@ -391,7 +411,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -439,6 +459,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + ConferencesApi apiInstance = new ConferencesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String name = "my-custom-name"; // String | Filter results by the `name` field. @@ -477,7 +501,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -525,6 +549,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + ConferencesApi apiInstance = new ConferencesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String conferenceId = "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"; // String | Programmable Voice API Conference ID. @@ -556,7 +584,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -604,6 +632,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + ConferencesApi apiInstance = new ConferencesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String conferenceId = "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"; // String | Programmable Voice API Conference ID. @@ -638,7 +670,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -686,6 +718,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + ConferencesApi apiInstance = new ConferencesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String conferenceId = "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"; // String | Programmable Voice API Conference ID. @@ -719,7 +755,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/MediaApi.md b/docs/MediaApi.md index 427119ae..4a378ea0 100644 --- a/docs/MediaApi.md +++ b/docs/MediaApi.md @@ -38,6 +38,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MediaApi apiInstance = new MediaApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String mediaId = "14762070468292kw2fuqty55yp2b2/0/bw.png"; // String | Media ID to retrieve. @@ -67,7 +71,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -115,6 +119,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MediaApi apiInstance = new MediaApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String mediaId = "14762070468292kw2fuqty55yp2b2/0/bw.png"; // String | Media ID to retrieve. @@ -145,7 +153,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -193,6 +201,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MediaApi apiInstance = new MediaApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String continuationToken = "1XEi2tsFtLo1JbtLwETnM1ZJ+PqAa8w6ENvC5QKvwyrCDYII663Gy5M4s40owR1tjkuWUif6qbWvFtQJR5/ipqbUnfAqL254LKNlPy6tATCzioKSuHuOqgzloDkSwRtX0LtcL2otHS69hK343m+SjdL+vlj71tT39"; // String | Continuation token used to retrieve subsequent media. @@ -223,7 +235,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -271,6 +283,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MediaApi apiInstance = new MediaApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String mediaId = "14762070468292kw2fuqty55yp2b2/0/bw.png"; // String | Media ID to retrieve. @@ -306,7 +322,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/MessagesApi.md b/docs/MessagesApi.md index 84135448..d10cc290 100644 --- a/docs/MessagesApi.md +++ b/docs/MessagesApi.md @@ -36,6 +36,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MessagesApi apiInstance = new MessagesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. MessageRequest messageRequest = new MessageRequest(); // MessageRequest | @@ -66,7 +70,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -115,6 +119,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MessagesApi apiInstance = new MessagesApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String messageId = "9e0df4ca-b18d-40d7-a59f-82fcdf5ae8e6"; // String | The ID of the message to search for. Special characters need to be encoded using URL encoding. Message IDs could come in different formats, e.g., 9e0df4ca-b18d-40d7-a59f-82fcdf5ae8e6 and 1589228074636lm4k2je7j7jklbn2 are valid message ID formats. Note that you must include at least one query parameter. @@ -197,7 +205,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/MfaApi.md b/docs/MfaApi.md index 34b407d2..ee184f93 100644 --- a/docs/MfaApi.md +++ b/docs/MfaApi.md @@ -37,6 +37,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MfaApi apiInstance = new MfaApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. CodeRequest codeRequest = new CodeRequest(); // CodeRequest | MFA code request body. @@ -67,7 +71,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -111,6 +115,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MfaApi apiInstance = new MfaApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. CodeRequest codeRequest = new CodeRequest(); // CodeRequest | MFA code request body. @@ -141,7 +149,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -185,6 +193,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MfaApi apiInstance = new MfaApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. VerifyCodeRequest verifyCodeRequest = new VerifyCodeRequest(); // VerifyCodeRequest | MFA code verify request body. @@ -215,7 +227,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/MultiChannelApi.md b/docs/MultiChannelApi.md index 5a6e5307..39d4040b 100644 --- a/docs/MultiChannelApi.md +++ b/docs/MultiChannelApi.md @@ -35,6 +35,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + MultiChannelApi apiInstance = new MultiChannelApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. MultiChannelMessageRequest multiChannelMessageRequest = new MultiChannelMessageRequest(); // MultiChannelMessageRequest | @@ -65,7 +69,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/PhoneNumberLookupApi.md b/docs/PhoneNumberLookupApi.md index be6defa2..4ef1f76d 100644 --- a/docs/PhoneNumberLookupApi.md +++ b/docs/PhoneNumberLookupApi.md @@ -36,6 +36,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + PhoneNumberLookupApi apiInstance = new PhoneNumberLookupApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. LookupRequest lookupRequest = new LookupRequest(); // LookupRequest | Phone number lookup request. @@ -66,7 +70,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -112,6 +116,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + PhoneNumberLookupApi apiInstance = new PhoneNumberLookupApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String requestId = "004223a0-8b17-41b1-bf81-20732adf5590"; // String | The phone number lookup request ID from Bandwidth. @@ -142,7 +150,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/RecordingsApi.md b/docs/RecordingsApi.md index 42131b80..a4d479a5 100644 --- a/docs/RecordingsApi.md +++ b/docs/RecordingsApi.md @@ -44,6 +44,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -75,7 +79,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -123,6 +127,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -154,7 +162,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -202,6 +210,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -233,7 +245,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -281,6 +293,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -313,7 +329,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -361,6 +377,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -393,7 +413,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -441,6 +461,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -473,7 +497,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -521,6 +545,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String to = "%2b19195551234"; // String | Filter results by the `to` field. @@ -557,7 +585,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -605,6 +633,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -635,7 +667,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -683,6 +715,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -716,7 +752,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -764,6 +800,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + RecordingsApi apiInstance = new RecordingsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -795,7 +835,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/StatisticsApi.md b/docs/StatisticsApi.md index be38dbc8..269b3c12 100644 --- a/docs/StatisticsApi.md +++ b/docs/StatisticsApi.md @@ -35,6 +35,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + StatisticsApi apiInstance = new StatisticsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. try { @@ -63,7 +67,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/TollFreeVerificationApi.md b/docs/TollFreeVerificationApi.md index 5f187578..b0e000f7 100644 --- a/docs/TollFreeVerificationApi.md +++ b/docs/TollFreeVerificationApi.md @@ -43,6 +43,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TollFreeVerificationApi apiInstance = new TollFreeVerificationApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. WebhookSubscriptionRequestSchema webhookSubscriptionRequestSchema = new WebhookSubscriptionRequestSchema(); // WebhookSubscriptionRequestSchema | Information about a webhook that Bandwidth should send upon the completion of event customer is trying to subscribe to. @@ -73,7 +77,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -121,6 +125,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TollFreeVerificationApi apiInstance = new TollFreeVerificationApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String phoneNumber = "+18885555555"; // String | Valid Toll-Free telephone number in E.164 format. @@ -150,7 +158,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -198,6 +206,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TollFreeVerificationApi apiInstance = new TollFreeVerificationApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String id = "7bt57JcsVYJrN9K1OcV1Nu"; // String | Webhook subscription ID @@ -227,7 +239,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -275,6 +287,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TollFreeVerificationApi apiInstance = new TollFreeVerificationApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String phoneNumber = "+18885555555"; // String | Valid Toll-Free telephone number in E.164 format. @@ -305,7 +321,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -353,6 +369,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TollFreeVerificationApi apiInstance = new TollFreeVerificationApi(defaultClient); try { List result = apiInstance.listTollFreeUseCases(); @@ -377,7 +397,7 @@ This endpoint does not need any parameter. ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -425,6 +445,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TollFreeVerificationApi apiInstance = new TollFreeVerificationApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. try { @@ -453,7 +477,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -500,6 +524,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TollFreeVerificationApi apiInstance = new TollFreeVerificationApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. VerificationRequest verificationRequest = new VerificationRequest(); // VerificationRequest | Request for verification of a toll-free phone number. @@ -529,7 +557,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -576,6 +604,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TollFreeVerificationApi apiInstance = new TollFreeVerificationApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String phoneNumber = "+18885555555"; // String | Valid Toll-Free telephone number in E.164 format. @@ -607,7 +639,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -654,6 +686,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TollFreeVerificationApi apiInstance = new TollFreeVerificationApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String id = "7bt57JcsVYJrN9K1OcV1Nu"; // String | Webhook subscription ID @@ -686,7 +722,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/docs/TranscriptionsApi.md b/docs/TranscriptionsApi.md index ec633266..35f434ef 100644 --- a/docs/TranscriptionsApi.md +++ b/docs/TranscriptionsApi.md @@ -37,6 +37,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TranscriptionsApi apiInstance = new TranscriptionsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -68,7 +72,7 @@ null (empty response body) ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -116,6 +120,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TranscriptionsApi apiInstance = new TranscriptionsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -148,7 +156,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers @@ -196,6 +204,10 @@ public class Example { Basic.setUsername("YOUR USERNAME"); Basic.setPassword("YOUR PASSWORD"); + // Configure OAuth2 access token for authorization: OAuth2 + OAuth OAuth2 = (OAuth) defaultClient.getAuthentication("OAuth2"); + OAuth2.setAccessToken("YOUR ACCESS TOKEN"); + TranscriptionsApi apiInstance = new TranscriptionsApi(defaultClient); String accountId = "9900000"; // String | Your Bandwidth Account ID. String callId = "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"; // String | Programmable Voice API Call ID. @@ -226,7 +238,7 @@ public class Example { ### Authorization -[Basic](../README.md#Basic) +[Basic](../README.md#Basic), [OAuth2](../README.md#OAuth2) ### HTTP request headers diff --git a/pom.xml b/pom.xml index 1f42da35..98896dea 100644 --- a/pom.xml +++ b/pom.xml @@ -361,6 +361,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/bandwidth/sdk/ApiClient.java b/src/main/java/com/bandwidth/sdk/ApiClient.java index c2710180..85a1fde6 100644 --- a/src/main/java/com/bandwidth/sdk/ApiClient.java +++ b/src/main/java/com/bandwidth/sdk/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; @@ -55,6 +57,9 @@ import com.bandwidth.sdk.auth.HttpBasicAuth; import com.bandwidth.sdk.auth.HttpBearerAuth; import com.bandwidth.sdk.auth.ApiKeyAuth; +import com.bandwidth.sdk.auth.OAuth; +import com.bandwidth.sdk.auth.RetryingOAuth; +import com.bandwidth.sdk.auth.OAuthFlow; /** *

ApiClient class.

@@ -101,6 +106,7 @@ public ApiClient() { // Setup authentications (key: authentication name, value: authentication). authentications.put("Basic", new HttpBasicAuth()); + authentications.put("OAuth2", new OAuth()); // Prevent the authentications from being modified. authentications = Collections.unmodifiableMap(authentications); } @@ -117,6 +123,74 @@ public ApiClient(OkHttpClient client) { // Setup authentications (key: authentication name, value: authentication). authentications.put("Basic", new HttpBasicAuth()); + authentications.put("OAuth2", 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.bandwidth.com/api/v1/oauth2/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( + "OAuth2", + retryingOAuth + ); + initHttpClient(Collections.singletonList(retryingOAuth)); + // Setup authentications (key: authentication name, value: authentication). + authentications.put("Basic", new HttpBasicAuth()); + // Prevent the authentications from being modified. authentications = Collections.unmodifiableMap(authentications); } @@ -452,6 +526,12 @@ public void setApiKeyPrefix(String apiKeyPrefix) { * @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!"); } @@ -636,6 +716,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/bandwidth/sdk/api/CallsApi.java b/src/main/java/com/bandwidth/sdk/api/CallsApi.java index c80844d8..43ef95b3 100644 --- a/src/main/java/com/bandwidth/sdk/api/CallsApi.java +++ b/src/main/java/com/bandwidth/sdk/api/CallsApi.java @@ -140,7 +140,7 @@ public okhttp3.Call createCallCall(String accountId, CreateCall createCall, fina localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -309,7 +309,7 @@ public okhttp3.Call getCallStateCall(String accountId, String callId, final ApiC localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -511,7 +511,7 @@ public okhttp3.Call listCallsCall(String accountId, String to, String from, Stri localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -696,7 +696,7 @@ public okhttp3.Call updateCallCall(String accountId, String callId, UpdateCall u localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -875,7 +875,7 @@ public okhttp3.Call updateCallBxmlCall(String accountId, String callId, String b localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/ConferencesApi.java b/src/main/java/com/bandwidth/sdk/api/ConferencesApi.java index aaf24a61..b41289a6 100644 --- a/src/main/java/com/bandwidth/sdk/api/ConferencesApi.java +++ b/src/main/java/com/bandwidth/sdk/api/ConferencesApi.java @@ -146,7 +146,7 @@ public okhttp3.Call downloadConferenceRecordingCall(String accountId, String con localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -323,7 +323,7 @@ public okhttp3.Call getConferenceCall(String accountId, String conferenceId, fin localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -494,7 +494,7 @@ public okhttp3.Call getConferenceMemberCall(String accountId, String conferenceI localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -673,7 +673,7 @@ public okhttp3.Call getConferenceRecordingCall(String accountId, String conferen localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -850,7 +850,7 @@ public okhttp3.Call listConferenceRecordingsCall(String accountId, String confer localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1042,7 +1042,7 @@ public okhttp3.Call listConferencesCall(String accountId, String name, String mi localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1220,7 +1220,7 @@ public okhttp3.Call updateConferenceCall(String accountId, String conferenceId, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1395,7 +1395,7 @@ public okhttp3.Call updateConferenceBxmlCall(String accountId, String conference localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1572,7 +1572,7 @@ public okhttp3.Call updateConferenceMemberCall(String accountId, String conferen localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/MediaApi.java b/src/main/java/com/bandwidth/sdk/api/MediaApi.java index e98cfb3b..2d66e1f0 100644 --- a/src/main/java/com/bandwidth/sdk/api/MediaApi.java +++ b/src/main/java/com/bandwidth/sdk/api/MediaApi.java @@ -138,7 +138,7 @@ public okhttp3.Call deleteMediaCall(String accountId, String mediaId, final ApiC localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -304,7 +304,7 @@ public okhttp3.Call getMediaCall(String accountId, String mediaId, final ApiCall localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -477,7 +477,7 @@ public okhttp3.Call listMediaCall(String accountId, String continuationToken, fi } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -702,7 +702,7 @@ public okhttp3.Call uploadMediaCall(String accountId, String mediaId, File body, } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/MessagesApi.java b/src/main/java/com/bandwidth/sdk/api/MessagesApi.java index c20261ed..0a0e2f99 100644 --- a/src/main/java/com/bandwidth/sdk/api/MessagesApi.java +++ b/src/main/java/com/bandwidth/sdk/api/MessagesApi.java @@ -145,7 +145,7 @@ public okhttp3.Call createMessageCall(String accountId, MessageRequest messageRe localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -449,7 +449,7 @@ public okhttp3.Call listMessagesCall(String accountId, String messageId, String localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/MfaApi.java b/src/main/java/com/bandwidth/sdk/api/MfaApi.java index d13c9a70..d2d85f50 100644 --- a/src/main/java/com/bandwidth/sdk/api/MfaApi.java +++ b/src/main/java/com/bandwidth/sdk/api/MfaApi.java @@ -139,7 +139,7 @@ public okhttp3.Call generateMessagingCodeCall(String accountId, CodeRequest code localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -292,7 +292,7 @@ public okhttp3.Call generateVoiceCodeCall(String accountId, CodeRequest codeRequ localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -446,7 +446,7 @@ public okhttp3.Call verifyCodeCall(String accountId, VerifyCodeRequest verifyCod localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/MultiChannelApi.java b/src/main/java/com/bandwidth/sdk/api/MultiChannelApi.java index e7768696..96f33409 100644 --- a/src/main/java/com/bandwidth/sdk/api/MultiChannelApi.java +++ b/src/main/java/com/bandwidth/sdk/api/MultiChannelApi.java @@ -139,7 +139,7 @@ public okhttp3.Call createMultiChannelMessageCall(String accountId, MultiChannel localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/PhoneNumberLookupApi.java b/src/main/java/com/bandwidth/sdk/api/PhoneNumberLookupApi.java index 397e6408..fcdef07b 100644 --- a/src/main/java/com/bandwidth/sdk/api/PhoneNumberLookupApi.java +++ b/src/main/java/com/bandwidth/sdk/api/PhoneNumberLookupApi.java @@ -139,7 +139,7 @@ public okhttp3.Call createLookupCall(String accountId, LookupRequest lookupReque localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -309,7 +309,7 @@ public okhttp3.Call getLookupStatusCall(String accountId, String requestId, fina localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/RecordingsApi.java b/src/main/java/com/bandwidth/sdk/api/RecordingsApi.java index e4700c63..68b3866b 100644 --- a/src/main/java/com/bandwidth/sdk/api/RecordingsApi.java +++ b/src/main/java/com/bandwidth/sdk/api/RecordingsApi.java @@ -143,7 +143,7 @@ public okhttp3.Call deleteRecordingCall(String accountId, String callId, String localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -318,7 +318,7 @@ public okhttp3.Call deleteRecordingMediaCall(String accountId, String callId, St localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -493,7 +493,7 @@ public okhttp3.Call deleteRecordingTranscriptionCall(String accountId, String ca localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -670,7 +670,7 @@ public okhttp3.Call downloadCallRecordingCall(String accountId, String callId, S localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -849,7 +849,7 @@ public okhttp3.Call getCallRecordingCall(String accountId, String callId, String localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1028,7 +1028,7 @@ public okhttp3.Call getRecordingTranscriptionCall(String accountId, String callI localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1223,7 +1223,7 @@ public okhttp3.Call listAccountCallRecordingsCall(String accountId, String to, S localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1396,7 +1396,7 @@ public okhttp3.Call listCallRecordingsCall(String accountId, String callId, fina localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1569,7 +1569,7 @@ public okhttp3.Call transcribeCallRecordingCall(String accountId, String callId, localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1752,7 +1752,7 @@ public okhttp3.Call updateCallRecordingStateCall(String accountId, String callId localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/StatisticsApi.java b/src/main/java/com/bandwidth/sdk/api/StatisticsApi.java index 8260db2d..4a9a1e86 100644 --- a/src/main/java/com/bandwidth/sdk/api/StatisticsApi.java +++ b/src/main/java/com/bandwidth/sdk/api/StatisticsApi.java @@ -135,7 +135,7 @@ public okhttp3.Call getStatisticsCall(String accountId, final ApiCallback _callb localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/TollFreeVerificationApi.java b/src/main/java/com/bandwidth/sdk/api/TollFreeVerificationApi.java index d2208831..f0bc198a 100644 --- a/src/main/java/com/bandwidth/sdk/api/TollFreeVerificationApi.java +++ b/src/main/java/com/bandwidth/sdk/api/TollFreeVerificationApi.java @@ -142,7 +142,7 @@ public okhttp3.Call createWebhookSubscriptionCall(String accountId, WebhookSubsc localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -311,7 +311,7 @@ public okhttp3.Call deleteVerificationRequestCall(String accountId, String phone localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -476,7 +476,7 @@ public okhttp3.Call deleteWebhookSubscriptionCall(String accountId, String id, f localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -641,7 +641,7 @@ public okhttp3.Call getTollFreeVerificationStatusCall(String accountId, String p localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -806,7 +806,7 @@ public okhttp3.Call listTollFreeUseCasesCall(final ApiCallback _callback) throws localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -956,7 +956,7 @@ public okhttp3.Call listWebhookSubscriptionsCall(String accountId, final ApiCall localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1113,7 +1113,7 @@ public okhttp3.Call requestTollFreeVerificationCall(String accountId, Verificati localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1276,7 +1276,7 @@ public okhttp3.Call updateTollFreeVerificationRequestCall(String accountId, Stri localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -1448,7 +1448,7 @@ public okhttp3.Call updateWebhookSubscriptionCall(String accountId, String id, W localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/api/TranscriptionsApi.java b/src/main/java/com/bandwidth/sdk/api/TranscriptionsApi.java index cd911d97..1e26c197 100644 --- a/src/main/java/com/bandwidth/sdk/api/TranscriptionsApi.java +++ b/src/main/java/com/bandwidth/sdk/api/TranscriptionsApi.java @@ -140,7 +140,7 @@ public okhttp3.Call deleteRealTimeTranscriptionCall(String accountId, String cal localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -315,7 +315,7 @@ public okhttp3.Call getRealTimeTranscriptionCall(String accountId, String callId localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } @@ -492,7 +492,7 @@ public okhttp3.Call listRealTimeTranscriptionsCall(String accountId, String call localVarHeaderParams.put("Content-Type", localVarContentType); } - String[] localVarAuthNames = new String[] { "Basic" }; + String[] localVarAuthNames = new String[] { "Basic", "OAuth2" }; return localVarApiClient.buildCall(basePath, localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarCookieParams, localVarFormParams, localVarAuthNames, _callback); } diff --git a/src/main/java/com/bandwidth/sdk/auth/OAuth.java b/src/main/java/com/bandwidth/sdk/auth/OAuth.java new file mode 100644 index 00000000..87e76816 --- /dev/null +++ b/src/main/java/com/bandwidth/sdk/auth/OAuth.java @@ -0,0 +1,42 @@ +/* + * Bandwidth + * Bandwidth's Communication APIs + * + * The version of the OpenAPI document: 1.0.0 + * Contact: letstalk@bandwidth.com + * + * 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.bandwidth.sdk.auth; + +import com.bandwidth.sdk.Pair; +import com.bandwidth.sdk.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.10.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/bandwidth/sdk/auth/OAuthFlow.java b/src/main/java/com/bandwidth/sdk/auth/OAuthFlow.java new file mode 100644 index 00000000..cd0037b0 --- /dev/null +++ b/src/main/java/com/bandwidth/sdk/auth/OAuthFlow.java @@ -0,0 +1,25 @@ +/* + * Bandwidth + * Bandwidth's Communication APIs + * + * The version of the OpenAPI document: 1.0.0 + * Contact: letstalk@bandwidth.com + * + * 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.bandwidth.sdk.auth; + +/** + * OAuth flows that are supported by this client + */ +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.10.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/bandwidth/sdk/auth/OAuthOkHttpClient.java b/src/main/java/com/bandwidth/sdk/auth/OAuthOkHttpClient.java new file mode 100644 index 00000000..d208453b --- /dev/null +++ b/src/main/java/com/bandwidth/sdk/auth/OAuthOkHttpClient.java @@ -0,0 +1,82 @@ +/* + * Bandwidth + * Bandwidth's Communication APIs + * + * The version of the OpenAPI document: 1.0.0 + * Contact: letstalk@bandwidth.com + * + * 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.bandwidth.sdk.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/bandwidth/sdk/auth/RetryingOAuth.java b/src/main/java/com/bandwidth/sdk/auth/RetryingOAuth.java new file mode 100644 index 00000000..41b38438 --- /dev/null +++ b/src/main/java/com/bandwidth/sdk/auth/RetryingOAuth.java @@ -0,0 +1,223 @@ +/* + * Bandwidth + * Bandwidth's Communication APIs + * + * The version of the OpenAPI document: 1.0.0 + * Contact: letstalk@bandwidth.com + * + * 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.bandwidth.sdk.auth; + +import com.bandwidth.sdk.ApiException; +import com.bandwidth.sdk.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 + } +}