diff --git a/src/main/java/com/auth0/client/mgmt/ManagementAPI.java b/src/main/java/com/auth0/client/mgmt/ManagementAPI.java
index cf7ec088..5ac89afb 100644
--- a/src/main/java/com/auth0/client/mgmt/ManagementAPI.java
+++ b/src/main/java/com/auth0/client/mgmt/ManagementAPI.java
@@ -364,6 +364,22 @@ public KeysEntity keys() {
return new KeysEntity(client, baseUrl, tokenProvider);
}
+ /**
+ * Getter for the Prompts Entity
+ * @return the Prompts Entity
+ */
+ public RefreshTokensEntity refreshTokens() {
+ return new RefreshTokensEntity(client, baseUrl, tokenProvider);
+ }
+
+ /**
+ * Getter for the Prompts Entity
+ * @return the Prompts Entity
+ */
+ public SessionsEntity sessions() {
+ return new SessionsEntity(client, baseUrl, tokenProvider);
+ }
+
/**
* Builder for {@link ManagementAPI} API client instances.
*/
diff --git a/src/main/java/com/auth0/client/mgmt/RefreshTokensEntity.java b/src/main/java/com/auth0/client/mgmt/RefreshTokensEntity.java
new file mode 100644
index 00000000..6911aef2
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/RefreshTokensEntity.java
@@ -0,0 +1,66 @@
+package com.auth0.client.mgmt;
+
+import com.auth0.json.mgmt.refreshtokens.RefreshToken;
+import com.auth0.net.BaseRequest;
+import com.auth0.net.Request;
+import com.auth0.net.VoidRequest;
+import com.auth0.net.client.Auth0HttpClient;
+import com.auth0.net.client.HttpMethod;
+import com.auth0.utils.Asserts;
+import com.fasterxml.jackson.core.type.TypeReference;
+import okhttp3.HttpUrl;
+
+/**
+ * Class that provides an implementation of the Refresh Tokens methods of the Management API as defined in https://auth0.com/docs/api/management/v2#!/Refresh_Tokens
+ *
+ * This class is not thread-safe.
+ * @see ManagementAPI
+ */
+@SuppressWarnings("WeakerAccess")
+public class RefreshTokensEntity extends BaseManagementEntity{
+
+ RefreshTokensEntity(Auth0HttpClient client, HttpUrl baseUrl, TokenProvider tokenProvider) {
+ super(client, baseUrl, tokenProvider);
+ }
+
+ /**
+ * Request the refresh token for a given refresh token ID.
+ * A token with scope {@code read:refresh_tokens} is needed.
+ * See https://auth0.com/docs/api/management/v2/refresh-tokens/get-refresh-token
+ * @param refreshTokenId the refresh token ID.
+ * @return a Request to execute.
+ */
+ public Request get(String refreshTokenId){
+ Asserts.assertNotNull(refreshTokenId, "refresh token ID");
+
+ String url = baseUrl
+ .newBuilder()
+ .addPathSegments("api/v2/refresh-tokens")
+ .addPathSegment(refreshTokenId)
+ .build()
+ .toString();
+
+ return new BaseRequest<>(client, tokenProvider, url, HttpMethod.GET, new TypeReference() {
+ });
+ }
+
+ /**
+ * Delete the refresh token for a given refresh token ID.
+ * * A token with scope {@code delete:refresh_tokens} is needed.
+ * See https://auth0.com/docs/api/management/v2/refresh-tokens/delete-refresh-token
+ * @param refreshTokenId the refresh token ID.
+ * @return a Request to execute.
+ */
+ public Request delete(String refreshTokenId){
+ Asserts.assertNotNull(refreshTokenId, "refresh token ID");
+
+ String url = baseUrl
+ .newBuilder()
+ .addPathSegments("api/v2/refresh-tokens")
+ .addPathSegment(refreshTokenId)
+ .build()
+ .toString();
+
+ return new VoidRequest(client, tokenProvider, url, HttpMethod.DELETE);
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/SessionsEntity.java b/src/main/java/com/auth0/client/mgmt/SessionsEntity.java
new file mode 100644
index 00000000..6ed853ee
--- /dev/null
+++ b/src/main/java/com/auth0/client/mgmt/SessionsEntity.java
@@ -0,0 +1,67 @@
+package com.auth0.client.mgmt;
+
+import com.auth0.json.mgmt.sessions.Session;
+import com.auth0.net.BaseRequest;
+import com.auth0.net.Request;
+import com.auth0.net.VoidRequest;
+import com.auth0.net.client.Auth0HttpClient;
+import com.auth0.net.client.HttpMethod;
+import com.auth0.utils.Asserts;
+import com.fasterxml.jackson.core.type.TypeReference;
+import okhttp3.HttpUrl;
+
+
+/**
+ * Class that provides an implementation of the Sessions methods of the Management API as defined in https://auth0.com/docs/api/management/v2#!/Sessions
+ *
+ * This class is not thread-safe.
+ * @see ManagementAPI
+ */
+@SuppressWarnings("WeakerAccess")
+public class SessionsEntity extends BaseManagementEntity{
+
+ SessionsEntity(Auth0HttpClient client, HttpUrl baseUrl, TokenProvider tokenProvider) {
+ super(client, baseUrl, tokenProvider);
+ }
+
+ /**
+ * Request the session for a given session ID.
+ * A token with scope {@code read:sessions} is needed.
+ * See https://auth0.com/docs/api/management/v2/sessions/get-session
+ * @param sessionId the session ID.
+ * @return a Request to execute.
+ */
+ public Request get(String sessionId){
+ Asserts.assertNotNull(sessionId, "session ID");
+
+ String url = baseUrl
+ .newBuilder()
+ .addPathSegments("api/v2/sessions")
+ .addPathSegment(sessionId)
+ .build()
+ .toString();
+
+ return new BaseRequest<>(client, tokenProvider, url, HttpMethod.GET, new TypeReference() {
+ });
+ }
+
+ /**
+ * Delete the session for a given session ID.
+ * A token with scope {@code delete:sessions} is needed.
+ * See https://auth0.com/docs/api/management/v2/sessions/delete-session
+ * @param sessionId the session ID.
+ * @return a Request to execute.
+ */
+ public Request delete(String sessionId){
+ Asserts.assertNotNull(sessionId, "session ID");
+
+ String url = baseUrl
+ .newBuilder()
+ .addPathSegments("api/v2/sessions")
+ .addPathSegment(sessionId)
+ .build()
+ .toString();
+
+ return new VoidRequest(client, tokenProvider, url, HttpMethod.DELETE);
+ }
+}
diff --git a/src/main/java/com/auth0/client/mgmt/UsersEntity.java b/src/main/java/com/auth0/client/mgmt/UsersEntity.java
index 450069e1..ac3e3548 100644
--- a/src/main/java/com/auth0/client/mgmt/UsersEntity.java
+++ b/src/main/java/com/auth0/client/mgmt/UsersEntity.java
@@ -13,8 +13,8 @@
import com.auth0.json.mgmt.users.RecoveryCode;
import com.auth0.json.mgmt.users.User;
import com.auth0.json.mgmt.users.UsersPage;
-import com.auth0.json.mgmt.users.refreshtokens.RefreshTokensPage;
-import com.auth0.json.mgmt.users.sessions.SessionsPage;
+import com.auth0.json.mgmt.refreshtokens.RefreshTokensPage;
+import com.auth0.json.mgmt.sessions.SessionsPage;
import com.auth0.net.EmptyBodyRequest;
import com.auth0.net.BaseRequest;
import com.auth0.net.Request;
diff --git a/src/main/java/com/auth0/client/mgmt/filter/CheckpointPaginationFilter.java b/src/main/java/com/auth0/client/mgmt/filter/CheckpointPaginationFilter.java
deleted file mode 100644
index 1f881b7c..00000000
--- a/src/main/java/com/auth0/client/mgmt/filter/CheckpointPaginationFilter.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.auth0.client.mgmt.filter;
-
-public class CheckpointPaginationFilter extends BaseFilter {
-
- /**
- * Return results inside an object that contains the total result count (true) or as a direct array of results (false, default).
- *
- * @param includeTotals whether to include or not total result count.
- * @return this filter instance
- */
- public CheckpointPaginationFilter withTotals(boolean includeTotals) {
- parameters.put("include_totals", includeTotals);
- return this;
- }
-
- /**
- * Optional ID from which to start selection (exclusive).
- *
- * @param from the ID from which to start selection. This can be obtained from the {@code next} field returned from
- * a checkpoint-paginated result.
- * @return this filter instance.
- */
- public CheckpointPaginationFilter withFrom(String from) {
- parameters.put("from", from);
- return this;
- }
-
- /**
- * Number of results per page. Defaults to 50.
- *
- * @param take the amount of entries to retrieve per page.
- * @return this filter instance.
- */
- public CheckpointPaginationFilter withTake(int take) {
- parameters.put("take", take);
- return this;
- }
-}
diff --git a/src/main/java/com/auth0/json/mgmt/users/refreshtokens/Device.java b/src/main/java/com/auth0/json/mgmt/refreshtokens/Device.java
similarity index 97%
rename from src/main/java/com/auth0/json/mgmt/users/refreshtokens/Device.java
rename to src/main/java/com/auth0/json/mgmt/refreshtokens/Device.java
index 7b2bc23c..e83e6133 100644
--- a/src/main/java/com/auth0/json/mgmt/users/refreshtokens/Device.java
+++ b/src/main/java/com/auth0/json/mgmt/refreshtokens/Device.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.refreshtokens;
+package com.auth0.json.mgmt.refreshtokens;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/auth0/json/mgmt/users/refreshtokens/RefreshToken.java b/src/main/java/com/auth0/json/mgmt/refreshtokens/RefreshToken.java
similarity index 98%
rename from src/main/java/com/auth0/json/mgmt/users/refreshtokens/RefreshToken.java
rename to src/main/java/com/auth0/json/mgmt/refreshtokens/RefreshToken.java
index 23536b88..2efc36b0 100644
--- a/src/main/java/com/auth0/json/mgmt/users/refreshtokens/RefreshToken.java
+++ b/src/main/java/com/auth0/json/mgmt/refreshtokens/RefreshToken.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.refreshtokens;
+package com.auth0.json.mgmt.refreshtokens;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/auth0/json/mgmt/users/refreshtokens/RefreshTokensPage.java b/src/main/java/com/auth0/json/mgmt/refreshtokens/RefreshTokensPage.java
similarity index 95%
rename from src/main/java/com/auth0/json/mgmt/users/refreshtokens/RefreshTokensPage.java
rename to src/main/java/com/auth0/json/mgmt/refreshtokens/RefreshTokensPage.java
index 06d7fd0e..9aea796c 100644
--- a/src/main/java/com/auth0/json/mgmt/users/refreshtokens/RefreshTokensPage.java
+++ b/src/main/java/com/auth0/json/mgmt/refreshtokens/RefreshTokensPage.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.refreshtokens;
+package com.auth0.json.mgmt.refreshtokens;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/auth0/json/mgmt/users/refreshtokens/ResourceServer.java b/src/main/java/com/auth0/json/mgmt/refreshtokens/ResourceServer.java
similarity index 93%
rename from src/main/java/com/auth0/json/mgmt/users/refreshtokens/ResourceServer.java
rename to src/main/java/com/auth0/json/mgmt/refreshtokens/ResourceServer.java
index b423de41..748b2e1d 100644
--- a/src/main/java/com/auth0/json/mgmt/users/refreshtokens/ResourceServer.java
+++ b/src/main/java/com/auth0/json/mgmt/refreshtokens/ResourceServer.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.refreshtokens;
+package com.auth0.json.mgmt.refreshtokens;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/auth0/json/mgmt/users/sessions/Authentication.java b/src/main/java/com/auth0/json/mgmt/sessions/Authentication.java
similarity index 92%
rename from src/main/java/com/auth0/json/mgmt/users/sessions/Authentication.java
rename to src/main/java/com/auth0/json/mgmt/sessions/Authentication.java
index dd9ba115..177c1469 100644
--- a/src/main/java/com/auth0/json/mgmt/users/sessions/Authentication.java
+++ b/src/main/java/com/auth0/json/mgmt/sessions/Authentication.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.sessions;
+package com.auth0.json.mgmt.sessions;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/auth0/json/mgmt/users/sessions/AuthenticationMethod.java b/src/main/java/com/auth0/json/mgmt/sessions/AuthenticationMethod.java
similarity index 95%
rename from src/main/java/com/auth0/json/mgmt/users/sessions/AuthenticationMethod.java
rename to src/main/java/com/auth0/json/mgmt/sessions/AuthenticationMethod.java
index c55634c5..012a29d6 100644
--- a/src/main/java/com/auth0/json/mgmt/users/sessions/AuthenticationMethod.java
+++ b/src/main/java/com/auth0/json/mgmt/sessions/AuthenticationMethod.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.sessions;
+package com.auth0.json.mgmt.sessions;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/auth0/json/mgmt/users/sessions/Client.java b/src/main/java/com/auth0/json/mgmt/sessions/Client.java
similarity index 91%
rename from src/main/java/com/auth0/json/mgmt/users/sessions/Client.java
rename to src/main/java/com/auth0/json/mgmt/sessions/Client.java
index aa51c6e9..7ac383e6 100644
--- a/src/main/java/com/auth0/json/mgmt/users/sessions/Client.java
+++ b/src/main/java/com/auth0/json/mgmt/sessions/Client.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.sessions;
+package com.auth0.json.mgmt.sessions;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/auth0/json/mgmt/users/sessions/Device.java b/src/main/java/com/auth0/json/mgmt/sessions/Device.java
similarity index 97%
rename from src/main/java/com/auth0/json/mgmt/users/sessions/Device.java
rename to src/main/java/com/auth0/json/mgmt/sessions/Device.java
index 590dc8cc..cf3fe395 100644
--- a/src/main/java/com/auth0/json/mgmt/users/sessions/Device.java
+++ b/src/main/java/com/auth0/json/mgmt/sessions/Device.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.sessions;
+package com.auth0.json.mgmt.sessions;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/auth0/json/mgmt/users/sessions/Session.java b/src/main/java/com/auth0/json/mgmt/sessions/Session.java
similarity index 98%
rename from src/main/java/com/auth0/json/mgmt/users/sessions/Session.java
rename to src/main/java/com/auth0/json/mgmt/sessions/Session.java
index f8d4b916..c231770e 100644
--- a/src/main/java/com/auth0/json/mgmt/users/sessions/Session.java
+++ b/src/main/java/com/auth0/json/mgmt/sessions/Session.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.sessions;
+package com.auth0.json.mgmt.sessions;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/main/java/com/auth0/json/mgmt/users/sessions/SessionsPage.java b/src/main/java/com/auth0/json/mgmt/sessions/SessionsPage.java
similarity index 96%
rename from src/main/java/com/auth0/json/mgmt/users/sessions/SessionsPage.java
rename to src/main/java/com/auth0/json/mgmt/sessions/SessionsPage.java
index 8d763ecd..10d58e9d 100644
--- a/src/main/java/com/auth0/json/mgmt/users/sessions/SessionsPage.java
+++ b/src/main/java/com/auth0/json/mgmt/sessions/SessionsPage.java
@@ -1,4 +1,4 @@
-package com.auth0.json.mgmt.users.sessions;
+package com.auth0.json.mgmt.sessions;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
diff --git a/src/test/java/com/auth0/client/MockServer.java b/src/test/java/com/auth0/client/MockServer.java
index 5b162e67..f8ee2189 100644
--- a/src/test/java/com/auth0/client/MockServer.java
+++ b/src/test/java/com/auth0/client/MockServer.java
@@ -78,6 +78,8 @@ public class MockServer {
public static final String MGMT_USERS_PAGED_LIST = "src/test/resources/mgmt/users_paged_list.json";
public static final String MGMT_USER_PERMISSIONS_PAGED_LIST = "src/test/resources/mgmt/user_permissions_paged_list.json";
public static final String MGMT_USER_ROLES_PAGED_LIST = "src/test/resources/mgmt/user_roles_paged_list.json";
+ public static final String MGMT_REFRESH_TOKEN = "src/test/resources/mgmt/refresh_token.json";
+ public static final String MGMT_SESSION = "src/test/resources/mgmt/session.json";
public static final String MGMT_USER_REFRESH_TOKENS = "src/test/resources/mgmt/user_refresh_tokens.json";
public static final String MGMT_USER_SESSIONS = "src/test/resources/mgmt/user_sessions.json";
public static final String MGMT_USER = "src/test/resources/mgmt/user.json";
diff --git a/src/test/java/com/auth0/client/mgmt/RefreshTokensEntityTest.java b/src/test/java/com/auth0/client/mgmt/RefreshTokensEntityTest.java
new file mode 100644
index 00000000..69ef2684
--- /dev/null
+++ b/src/test/java/com/auth0/client/mgmt/RefreshTokensEntityTest.java
@@ -0,0 +1,61 @@
+package com.auth0.client.mgmt;
+
+import com.auth0.json.mgmt.refreshtokens.RefreshToken;
+import com.auth0.net.Request;
+import com.auth0.net.client.HttpMethod;
+import okhttp3.mockwebserver.RecordedRequest;
+import org.junit.jupiter.api.Test;
+
+import static com.auth0.AssertsUtil.verifyThrows;
+import static com.auth0.client.MockServer.MGMT_REFRESH_TOKEN;
+import static com.auth0.client.RecordedRequestMatcher.hasHeader;
+import static com.auth0.client.RecordedRequestMatcher.hasMethodAndPath;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+public class RefreshTokensEntityTest extends BaseMgmtEntityTest{
+
+ @Test
+ public void shouldThrowOnGetWithNullRefreshTokenId() {
+ verifyThrows(IllegalArgumentException.class,
+ () -> api.refreshTokens().get(null),
+ "'refresh token ID' cannot be null!");
+ }
+
+ @Test
+ public void shouldGetRefreshToken() throws Exception {
+ Request request = api.refreshTokens().get("refresh_token_ID");
+ assertThat(request, is(notNullValue()));
+
+ server.jsonResponse(MGMT_REFRESH_TOKEN, 200);
+ RefreshToken response =request.execute().getBody();
+ RecordedRequest recordedRequest = server.takeRequest();
+
+ assertThat(recordedRequest, hasMethodAndPath(HttpMethod.GET, "/api/v2/refresh-tokens/refresh_token_ID"));
+ assertThat(recordedRequest, hasHeader("Content-Type", "application/json"));
+ assertThat(recordedRequest, hasHeader("Authorization", "Bearer apiToken"));
+
+ assertThat(response, is(notNullValue()));
+ }
+
+ @Test
+ public void shouldThrowOnDeleteWithNullRefreshTokenId() {
+ verifyThrows(IllegalArgumentException.class,
+ () -> api.refreshTokens().delete(null),
+ "'refresh token ID' cannot be null!");
+ }
+
+ @Test
+ public void shouldDeleteRefreshToken() throws Exception {
+ Request request = api.refreshTokens().delete("refresh_token_ID");
+ assertThat(request, is(notNullValue()));
+
+ server.noContentResponse();
+ request.execute().getBody();
+ RecordedRequest recordedRequest = server.takeRequest();
+
+ assertThat(recordedRequest, hasMethodAndPath(HttpMethod.DELETE, "/api/v2/refresh-tokens/refresh_token_ID"));
+ assertThat(recordedRequest, hasHeader("Authorization", "Bearer apiToken"));
+ }
+}
diff --git a/src/test/java/com/auth0/client/mgmt/SessionsEntityTest.java b/src/test/java/com/auth0/client/mgmt/SessionsEntityTest.java
new file mode 100644
index 00000000..a1e847ff
--- /dev/null
+++ b/src/test/java/com/auth0/client/mgmt/SessionsEntityTest.java
@@ -0,0 +1,61 @@
+package com.auth0.client.mgmt;
+
+import com.auth0.json.mgmt.sessions.Session;
+import com.auth0.net.Request;
+import com.auth0.net.client.HttpMethod;
+import okhttp3.mockwebserver.RecordedRequest;
+import org.junit.jupiter.api.Test;
+
+import static com.auth0.AssertsUtil.verifyThrows;
+import static com.auth0.client.MockServer.MGMT_SESSION;
+import static com.auth0.client.RecordedRequestMatcher.hasHeader;
+import static com.auth0.client.RecordedRequestMatcher.hasMethodAndPath;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+public class SessionsEntityTest extends BaseMgmtEntityTest{
+ @Test
+ public void getSessionShouldThrowOnNullSessionId() {
+ verifyThrows(IllegalArgumentException.class,
+ () -> api.sessions().get(null),
+ "'session ID' cannot be null!");
+ }
+
+ @Test
+ public void shouldGetSession() throws Exception {
+ Request request = api.sessions().get("session_ID");
+ assertThat(request, is(notNullValue()));
+
+ server.jsonResponse(MGMT_SESSION, 200);
+ Session response = request.execute().getBody();
+ RecordedRequest recordedRequest = server.takeRequest();
+
+ assertThat(recordedRequest, hasMethodAndPath(HttpMethod.GET, "/api/v2/sessions/session_ID"));
+ assertThat(recordedRequest, hasHeader("Content-Type", "application/json"));
+ assertThat(recordedRequest, hasHeader("Authorization", "Bearer apiToken"));
+
+ assertThat(response, is(notNullValue()));
+ }
+
+ @Test
+ public void deleteSessionShouldThrowOnNullSessionId() {
+ verifyThrows(IllegalArgumentException.class,
+ () -> api.sessions().delete(null),
+ "'session ID' cannot be null!");
+ }
+
+ @Test
+ public void shouldDeleteSession() throws Exception {
+ Request request = api.sessions().delete("session_ID");
+ assertThat(request, is(notNullValue()));
+
+ server.noContentResponse();
+ request.execute().getBody();
+ RecordedRequest recordedRequest = server.takeRequest();
+
+ assertThat(recordedRequest, hasMethodAndPath(HttpMethod.DELETE, "/api/v2/sessions/session_ID"));
+ assertThat(recordedRequest, hasHeader("Authorization", "Bearer apiToken"));
+ }
+
+}
diff --git a/src/test/java/com/auth0/client/mgmt/UsersEntityTest.java b/src/test/java/com/auth0/client/mgmt/UsersEntityTest.java
index 1630ee34..59da2b86 100644
--- a/src/test/java/com/auth0/client/mgmt/UsersEntityTest.java
+++ b/src/test/java/com/auth0/client/mgmt/UsersEntityTest.java
@@ -4,8 +4,6 @@
import com.auth0.client.mgmt.filter.LogEventFilter;
import com.auth0.client.mgmt.filter.PageFilter;
import com.auth0.client.mgmt.filter.UserFilter;
-import com.auth0.client.mgmt.filter.CheckpointPaginationFilter;
-import com.auth0.json.mgmt.Page;
import com.auth0.json.mgmt.guardian.Enrollment;
import com.auth0.json.mgmt.logevents.LogEvent;
import com.auth0.json.mgmt.logevents.LogEventsPage;
@@ -19,8 +17,8 @@
import com.auth0.json.mgmt.users.UsersPage;
import com.auth0.json.mgmt.users.authenticationmethods.AuthenticationMethod;
import com.auth0.json.mgmt.users.authenticationmethods.AuthenticationMethodsPage;
-import com.auth0.json.mgmt.users.refreshtokens.RefreshTokensPage;
-import com.auth0.json.mgmt.users.sessions.SessionsPage;
+import com.auth0.json.mgmt.refreshtokens.RefreshTokensPage;
+import com.auth0.json.mgmt.sessions.SessionsPage;
import com.auth0.net.Request;
import com.auth0.net.client.HttpMethod;
import okhttp3.mockwebserver.RecordedRequest;
diff --git a/src/test/java/com/auth0/client/mgmt/filter/CheckpointPaginationFilterTest.java b/src/test/java/com/auth0/client/mgmt/filter/CheckpointPaginationFilterTest.java
deleted file mode 100644
index 69cb4641..00000000
--- a/src/test/java/com/auth0/client/mgmt/filter/CheckpointPaginationFilterTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.auth0.client.mgmt.filter;
-
-import org.hamcrest.Matchers;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-
-public class CheckpointPaginationFilterTest {
-
- private CheckpointPaginationFilter filter;
-
- @BeforeEach
- public void setUp() {
- filter = new CheckpointPaginationFilter();
- }
-
- @Test
- public void shouldIncludeTotals() {
- CheckpointPaginationFilter instance = filter.withTotals(true);
-
- assertThat(filter, is(instance));
- assertThat(filter.getAsMap(), is(notNullValue()));
- assertThat(filter.getAsMap(), Matchers.hasEntry("include_totals", true));
- }
-
- @Test
- public void shouldIncludeCheckpointParams() {
- CheckpointPaginationFilter instance = filter.withFrom("abc123").withTake(2);
-
- assertThat(filter.getAsMap(), is(notNullValue()));
- assertThat(filter.getAsMap(), Matchers.hasEntry("from", "abc123"));
- assertThat(filter.getAsMap(), Matchers.hasEntry("take", 2));
- }
-}
diff --git a/src/test/java/com/auth0/json/mgmt/refreshtokens/RefreshTokenTest.java b/src/test/java/com/auth0/json/mgmt/refreshtokens/RefreshTokenTest.java
new file mode 100644
index 00000000..35e7d700
--- /dev/null
+++ b/src/test/java/com/auth0/json/mgmt/refreshtokens/RefreshTokenTest.java
@@ -0,0 +1,86 @@
+package com.auth0.json.mgmt.refreshtokens;
+
+import com.auth0.json.JsonTest;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.*;
+
+public class RefreshTokenTest extends JsonTest {
+
+ private static final String json = "{\n" +
+ " \"id\": \"tokenId1\",\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"created_at\": \"2024-06-26T09:10:26.643Z\",\n" +
+ " \"idle_expires_at\": \"2024-06-26T09:10:27.131Z\",\n" +
+ " \"expires_at\": \"2024-07-03T09:10:26.643Z\",\n" +
+ " \"device\": {\n" +
+ " \"initial_asn\": \"1234\",\n" +
+ " \"initial_ip\": \"203.0.113.1\",\n" +
+ " \"initial_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_ip\": \"203.0.113.1\",\n" +
+ " \"last_asn\": \"1234\"\n" +
+ " },\n" +
+ " \"client_id\": \"clientId1\",\n" +
+ " \"session_id\": \"sessionId1\",\n" +
+ " \"rotating\": false,\n" +
+ " \"resource_servers\": [\n" +
+ " {\n" +
+ " \"audience\": \"https://api.example.com\",\n" +
+ " \"scopes\": [\n" +
+ " \"read:examples\",\n" +
+ " \"write:examples\"\n" +
+ " ]\n" +
+ " }\n" +
+ " ],\n" +
+ " \"last_exchanged_at\": \"2024-07-03T09:10:26.643Z\"\n" +
+ "}";
+
+ private static final String readOnlyJson = "{\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"client_id\": \"clientId1\",\n" +
+ " \"session_id\": \"sessionId1\"\n" +
+ "}";
+
+ @Test
+ public void shouldDeserialize() throws Exception {
+ RefreshToken refreshToken = fromJSON(json, RefreshToken.class);
+ assertThat(refreshToken, is(notNullValue()));
+
+ assertThat(refreshToken.getId(), is("tokenId1"));
+ assertThat(refreshToken.getUserId(), is("userId1"));
+ assertThat(refreshToken.getCreatedAt(), is(parseJSONDate("2024-06-26T09:10:26.643Z")));
+ assertThat(refreshToken.getIdleExpiresAt(), is(parseJSONDate("2024-06-26T09:10:27.131Z")));
+ assertThat(refreshToken.getExpiresAt(), is(parseJSONDate("2024-07-03T09:10:26.643Z")));
+
+ assertThat(refreshToken.getDevice(), is(notNullValue()));
+ assertThat(refreshToken.getDevice().getInitialAsn(), is("1234"));
+ assertThat(refreshToken.getDevice().getInitialIp(), is("203.0.113.1"));
+ assertThat(refreshToken.getDevice().getInitialUserAgent(), is("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"));
+ assertThat(refreshToken.getDevice().getLastUserAgent(), is("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"));
+ assertThat(refreshToken.getDevice().getLastIp(), is("203.0.113.1"));
+ assertThat(refreshToken.getDevice().getLastAsn(), is("1234"));
+
+ assertThat(refreshToken.getClientId(), is("clientId1"));
+ assertThat(refreshToken.getSessionId(), is("sessionId1"));
+ assertThat(refreshToken.isRotating(), is(false));
+
+ assertThat(refreshToken.getResourceServers(), is(notNullValue()));
+ assertThat(refreshToken.getResourceServers().get(0).getAudience(), is("https://api.example.com"));
+ assertThat(refreshToken.getResourceServers().get(0).getScopes(), is(notNullValue()));
+ assertThat(refreshToken.getResourceServers().get(0).getScopes().get(0), is("read:examples"));
+ assertThat(refreshToken.getResourceServers().get(0).getScopes().get(1), is("write:examples"));
+
+ assertThat(refreshToken.getLastExchangedAt(), is(parseJSONDate("2024-07-03T09:10:26.643Z")));
+ }
+
+ @Test
+ public void shouldIncludeReadOnlyValuesOnDeserialize() throws Exception {
+ RefreshToken refreshToken = fromJSON(readOnlyJson, RefreshToken.class);
+ assertThat(refreshToken, is(notNullValue()));
+ assertThat(refreshToken.getUserId(), is("userId1"));
+ assertThat(refreshToken.getClientId(), is("clientId1"));
+ assertThat(refreshToken.getSessionId(), is("sessionId1"));
+ }
+}
diff --git a/src/test/java/com/auth0/json/mgmt/refreshtokens/RefreshTokensPageTest.java b/src/test/java/com/auth0/json/mgmt/refreshtokens/RefreshTokensPageTest.java
new file mode 100644
index 00000000..f86c7df7
--- /dev/null
+++ b/src/test/java/com/auth0/json/mgmt/refreshtokens/RefreshTokensPageTest.java
@@ -0,0 +1,175 @@
+package com.auth0.json.mgmt.refreshtokens;
+
+import com.auth0.json.JsonTest;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
+
+public class RefreshTokensPageTest extends JsonTest {
+ private static final String json = "{\n" +
+ " \"tokens\": [\n" +
+ " {\n" +
+ " \"id\": \"tokenId1\",\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"created_at\": \"2024-06-26T09:10:26.643Z\",\n" +
+ " \"updated_at\": \"2024-06-26T09:10:27.131Z\",\n" +
+ " \"expires_at\": \"2024-07-03T09:10:26.643Z\",\n" +
+ " \"device\": {\n" +
+ " \"initial_asn\": \"1234\",\n" +
+ " \"initial_ip\": \"203.0.113.1\",\n" +
+ " \"initial_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_ip\": \"203.0.113.1\",\n" +
+ " \"last_asn\": \"1234\"\n" +
+ " },\n" +
+ " \"client_id\": \"clientId1\",\n" +
+ " \"session_id\": \"sessionId1\",\n" +
+ " \"rotating\": false,\n" +
+ " \"resource_servers\": [\n" +
+ " {\n" +
+ " \"audience\": \"https://api.example.com\",\n" +
+ " \"scopes\": [\n" +
+ " \"read:examples\",\n" +
+ " \"write:examples\"\n" +
+ " ]\n" +
+ " }\n" +
+ " ],\n" +
+ " \"last_exchanged_at\": \"2024-07-03T09:10:26.643Z\"\n" +
+ " },\n" +
+ " {\n" +
+ " \"id\": \"tokenId2\",\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"created_at\": \"2024-06-26T09:10:26.643Z\",\n" +
+ " \"updated_at\": \"2024-06-26T09:10:27.131Z\",\n" +
+ " \"expires_at\": \"2024-07-03T09:10:26.643Z\",\n" +
+ " \"device\": {\n" +
+ " \"initial_asn\": \"1234\",\n" +
+ " \"initial_ip\": \"203.0.113.1\",\n" +
+ " \"initial_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_ip\": \"203.0.113.1\",\n" +
+ " \"last_asn\": \"1234\"\n" +
+ " },\n" +
+ " \"client_id\": \"clientId2\",\n" +
+ " \"session_id\": \"sessionId2\",\n" +
+ " \"rotating\": true,\n" +
+ " \"resource_servers\": [\n" +
+ " {\n" +
+ " \"audience\": \"https://api.example.com\",\n" +
+ " \"scopes\": [\n" +
+ " \"read:examples\",\n" +
+ " \"write:examples\"\n" +
+ " ]\n" +
+ " }\n" +
+ " ],\n" +
+ " \"last_exchanged_at\": \"2024-07-03T09:10:26.643Z\"\n" +
+ " }\n" +
+ " ],\n" +
+ " \"next\": \"token1\"\n" +
+ "}";
+
+ private static final String jsonWithTotal = "{\n" +
+ " \"tokens\": [\n" +
+ " {\n" +
+ " \"id\": \"tokenId1\",\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"created_at\": \"2024-06-26T09:10:26.643Z\",\n" +
+ " \"updated_at\": \"2024-06-26T09:10:27.131Z\",\n" +
+ " \"expires_at\": \"2024-07-03T09:10:26.643Z\",\n" +
+ " \"device\": {\n" +
+ " \"initial_asn\": \"1234\",\n" +
+ " \"initial_ip\": \"203.0.113.1\",\n" +
+ " \"initial_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_ip\": \"203.0.113.1\",\n" +
+ " \"last_asn\": \"1234\"\n" +
+ " },\n" +
+ " \"client_id\": \"clientId1\",\n" +
+ " \"session_id\": \"sessionId1\",\n" +
+ " \"rotating\": false,\n" +
+ " \"resource_servers\": [\n" +
+ " {\n" +
+ " \"audience\": \"https://api.example.com\",\n" +
+ " \"scopes\": [\n" +
+ " \"read:examples\",\n" +
+ " \"write:examples\"\n" +
+ " ]\n" +
+ " }\n" +
+ " ],\n" +
+ " \"last_exchanged_at\": \"2024-07-03T09:10:26.643Z\"\n" +
+ " },\n" +
+ " {\n" +
+ " \"id\": \"tokenId2\",\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"created_at\": \"2024-06-26T09:10:26.643Z\",\n" +
+ " \"updated_at\": \"2024-06-26T09:10:27.131Z\",\n" +
+ " \"expires_at\": \"2024-07-03T09:10:26.643Z\",\n" +
+ " \"device\": {\n" +
+ " \"initial_asn\": \"1234\",\n" +
+ " \"initial_ip\": \"203.0.113.1\",\n" +
+ " \"initial_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_ip\": \"203.0.113.1\",\n" +
+ " \"last_asn\": \"1234\"\n" +
+ " },\n" +
+ " \"client_id\": \"clientId2\",\n" +
+ " \"session_id\": \"sessionId2\",\n" +
+ " \"rotating\": true,\n" +
+ " \"resource_servers\": [\n" +
+ " {\n" +
+ " \"audience\": \"https://api.example.com\",\n" +
+ " \"scopes\": [\n" +
+ " \"read:examples\",\n" +
+ " \"write:examples\"\n" +
+ " ]\n" +
+ " }\n" +
+ " ],\n" +
+ " \"last_exchanged_at\": \"2024-07-03T09:10:26.643Z\"\n" +
+ " }\n" +
+ " ],\n" +
+ " \"next\": \"token1\",\n" +
+ " \"total\": 11\n" +
+ "}";
+ @Test
+ public void shouldDeserialize() throws Exception {
+ RefreshTokensPage page = fromJSON(json, RefreshTokensPage.class);
+
+ assertThat(page.getTotal(), is(nullValue()));
+ assertThat(page.getNext(), is("token1"));
+
+ assertThat(page.getTokens().size(), is(2));
+ assertThat(page.getTokens().get(0).getId(), is("tokenId1"));
+ assertThat(page.getTokens().get(0).getUserId(), is("userId1"));
+ assertThat(page.getTokens().get(0).getCreatedAt(), is(parseJSONDate("2024-06-26T09:10:26.643Z")));
+ assertThat(page.getTokens().get(0).getIdleExpiresAt(), is(nullValue()));
+ assertThat(page.getTokens().get(0).getExpiresAt(), is(parseJSONDate("2024-07-03T09:10:26.643Z")));
+
+ assertThat(page.getTokens().get(0).getDevice().getInitialIp(), is("203.0.113.1"));
+ assertThat(page.getTokens().get(0).getDevice().getInitialAsn(), is("1234"));
+ assertThat(page.getTokens().get(0).getDevice().getInitialUserAgent(), is("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"));
+ assertThat(page.getTokens().get(0).getDevice().getLastIp(), is("203.0.113.1"));
+ assertThat(page.getTokens().get(0).getDevice().getLastAsn(), is("1234"));
+ assertThat(page.getTokens().get(0).getDevice().getLastUserAgent(), is("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"));
+
+ assertThat(page.getTokens().get(0).getClientId(), is("clientId1"));
+ assertThat(page.getTokens().get(0).getSessionId(), is("sessionId1"));
+ assertThat(page.getTokens().get(0).isRotating(), is(false));
+
+ assertThat(page.getTokens().get(0).getResourceServers().size(), is(1));
+ assertThat(page.getTokens().get(0).getResourceServers().get(0).getAudience(), is("https://api.example.com"));
+ assertThat(page.getTokens().get(0).getResourceServers().get(0).getScopes().size(), is(2));
+ assertThat(page.getTokens().get(0).getResourceServers().get(0).getScopes().get(0), is("read:examples"));
+ assertThat(page.getTokens().get(0).getResourceServers().get(0).getScopes().get(1), is("write:examples"));
+
+ assertThat(page.getTokens().get(0).getLastExchangedAt(), is(parseJSONDate("2024-07-03T09:10:26.643Z")));
+ }
+
+ @Test
+ public void shouldDeserializeWithTotal() throws Exception {
+ RefreshTokensPage page = fromJSON(jsonWithTotal, RefreshTokensPage.class);
+
+ assertThat(page.getTotal(), is(11));
+ }
+}
diff --git a/src/test/java/com/auth0/json/mgmt/sessions/SessionTest.java b/src/test/java/com/auth0/json/mgmt/sessions/SessionTest.java
new file mode 100644
index 00000000..8ed3d2c2
--- /dev/null
+++ b/src/test/java/com/auth0/json/mgmt/sessions/SessionTest.java
@@ -0,0 +1,91 @@
+package com.auth0.json.mgmt.sessions;
+
+import com.auth0.json.JsonTest;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+public class SessionTest extends JsonTest {
+
+ private static final String json = "{\n" +
+ " \"id\": \"sessionId1\",\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"created_at\": \"2024-09-04T06:41:46.145Z\",\n" +
+ " \"updated_at\": \"2024-09-04T06:41:46.621Z\",\n" +
+ " \"authenticated_at\": \"2024-09-04T06:41:46.145Z\",\n" +
+ " \"authentication\": {\n" +
+ " \"methods\": [\n" +
+ " {\n" +
+ " \"name\": \"federated\",\n" +
+ " \"timestamp\": \"2024-09-04T06:41:46.145Z\"\n" +
+ " }\n" +
+ " ]\n" +
+ " },\n" +
+ " \"idle_expires_at\": \"2024-09-07T06:41:46.622Z\",\n" +
+ " \"expires_at\": \"2024-09-11T06:41:46.145Z\",\n" +
+ " \"device\": {\n" +
+ " \"initial_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36\",\n" +
+ " \"initial_asn\": \"1234\",\n" +
+ " \"initial_ip\": \"134.1.15.0\",\n" +
+ " \"last_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36\",\n" +
+ " \"last_ip\": \"134.1.15.0\",\n" +
+ " \"last_asn\": \"1234\"\n" +
+ " },\n" +
+ " \"clients\": [\n" +
+ " {\n" +
+ " \"client_id\": \"clientId1\"\n" +
+ " }\n" +
+ " ]\n" +
+ "}";
+
+ private static final String readOnlyJson = "{\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"clients\": [\n" +
+ " {\n" +
+ " \"client_id\": \"clientId1\"\n" +
+ " }\n" +
+ " ]\n" +
+ "}";
+
+ @Test
+ public void shouldDeserialize() throws Exception {
+ Session session = fromJSON(json, Session.class);
+
+ assertThat(session, is(notNullValue()));
+ assertThat(session.getId(), is("sessionId1"));
+ assertThat(session.getUserId(), is("userId1"));
+ assertThat(session.getCreatedAt(), is(parseJSONDate("2024-09-04T06:41:46.145Z")));
+ assertThat(session.getUpdatedAt(), is(parseJSONDate("2024-09-04T06:41:46.621Z")));
+ assertThat(session.getAuthenticatedAt(), is(parseJSONDate("2024-09-04T06:41:46.145Z")));
+
+ assertThat(session.getAuthentication().getMethods(), is(notNullValue()));
+ assertThat(session.getAuthentication().getMethods().get(0).getName(), is("federated"));
+ assertThat(session.getAuthentication().getMethods().get(0).getTimestamp(), is(parseJSONDate("2024-09-04T06:41:46.145Z")));
+
+ assertThat(session.getIdleExpiresAt(), is(parseJSONDate("2024-09-07T06:41:46.622Z")));
+ assertThat(session.getExpiresAt(), is(parseJSONDate("2024-09-11T06:41:46.145Z")));
+
+ assertThat(session.getDevice(), is(notNullValue()));
+ assertThat(session.getDevice().getInitialASN(), is("1234"));
+ assertThat(session.getDevice().getInitialIP(), is("134.1.15.0"));
+ assertThat(session.getDevice().getInitialUserAgent(), is("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"));
+ assertThat(session.getDevice().getLastASN(), is("1234"));
+ assertThat(session.getDevice().getLastIP(), is("134.1.15.0"));
+ assertThat(session.getDevice().getLastUserAgent(), is("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"));
+
+ assertThat(session.getClients(), is(notNullValue()));
+ assertThat(session.getClients().get(0).getClientId(), is("clientId1"));
+ }
+
+ @Test
+ public void shouldIncludeReadOnlyValuesOnDeserialize() throws Exception {
+ Session session = fromJSON(readOnlyJson, Session.class);
+ assertThat(session, is(notNullValue()));
+ assertThat(session.getUserId(), is("userId1"));
+ assertThat(session.getClients().get(0).getClientId(), is("clientId1"));
+ }
+
+
+}
diff --git a/src/test/java/com/auth0/json/mgmt/sessions/SessionsPageTest.java b/src/test/java/com/auth0/json/mgmt/sessions/SessionsPageTest.java
new file mode 100644
index 00000000..12d28899
--- /dev/null
+++ b/src/test/java/com/auth0/json/mgmt/sessions/SessionsPageTest.java
@@ -0,0 +1,121 @@
+package com.auth0.json.mgmt.sessions;
+
+import com.auth0.json.JsonTest;
+import com.auth0.json.mgmt.sessions.SessionsPage;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.nullValue;
+
+public class SessionsPageTest extends JsonTest {
+ private static final String json = "{\n" +
+ " \"sessions\": [\n" +
+ " {\n" +
+ " \"id\": \"sessionId1\",\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"created_at\": \"2024-06-26T09:10:26.643Z\",\n" +
+ " \"updated_at\": \"2024-06-26T09:10:27.131Z\",\n" +
+ " \"authenticated_at\": \"2024-06-26T09:10:26.643Z\",\n" +
+ " \"authentication\": {\n" +
+ " \"methods\": [\n" +
+ " {\n" +
+ " \"name\": \"pwd\",\n" +
+ " \"timestamp\": \"2024-06-26T09:10:26.643Z\"\n" +
+ " }\n" +
+ " ]\n" +
+ " },\n" +
+ " \"idle_expires_at\": \"2024-06-26T09:40:27.131Z\",\n" +
+ " \"expires_at\": \"2024-07-03T09:10:26.643Z\",\n" +
+ " \"device\": {\n" +
+ " \"initial_asn\": \"1234\",\n" +
+ " \"initial_ip\": \"203.0.113.1\",\n" +
+ " \"initial_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_ip\": \"203.0.113.1\",\n" +
+ " \"last_asn\": \"1234\"\n" +
+ " },\n" +
+ " \"clients\": [\n" +
+ " {\n" +
+ " \"client_id\": \"clientId1\"\n" +
+ " }\n" +
+ " ]\n" +
+ " }\n" +
+ " ],\n" +
+ " \"next\": \"sessionId1\"\n" +
+ "}";
+ private static final String jsonWithTotals = "{\n" +
+ " \"sessions\": [\n" +
+ " {\n" +
+ " \"id\": \"sessionId1\",\n" +
+ " \"user_id\": \"userId1\",\n" +
+ " \"created_at\": \"2024-06-26T09:10:26.643Z\",\n" +
+ " \"updated_at\": \"2024-06-26T09:10:27.131Z\",\n" +
+ " \"authenticated_at\": \"2024-06-26T09:10:26.643Z\",\n" +
+ " \"authentication\": {\n" +
+ " \"methods\": [\n" +
+ " {\n" +
+ " \"name\": \"pwd\",\n" +
+ " \"timestamp\": \"2024-06-26T09:10:26.643Z\"\n" +
+ " }\n" +
+ " ]\n" +
+ " },\n" +
+ " \"idle_expires_at\": \"2024-06-26T09:40:27.131Z\",\n" +
+ " \"expires_at\": \"2024-07-03T09:10:26.643Z\",\n" +
+ " \"device\": {\n" +
+ " \"initial_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36\",\n" +
+ " \"initial_asn\": \"1234\",\n" +
+ " \"initial_ip\": \"203.0.113.1\",\n" +
+ " \"last_user_agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n" +
+ " \"last_ip\": \"203.0.113.1\",\n" +
+ " \"last_asn\": \"1234\"\n" +
+ " },\n" +
+ " \"clients\": [\n" +
+ " {\n" +
+ " \"client_id\": \"clientId1\"\n" +
+ " }\n" +
+ " ]\n" +
+ " }\n" +
+ " ],\n" +
+ " \"next\": \"sessionId1\",\n" +
+ " \"total\": 11\n" +
+ "}";
+
+ @Test
+ public void shouldDeserialize() throws Exception {
+ SessionsPage page = fromJSON(json, SessionsPage.class);
+
+ assertThat(page.getTotal(), is(nullValue()));
+ assertThat(page.getNext(), is("sessionId1"));
+ assertThat(page.getSessions().size(), is(1));
+ assertThat(page.getSessions().get(0).getId(), is("sessionId1"));
+ assertThat(page.getSessions().get(0).getUserId(), is("userId1"));
+ assertThat(page.getSessions().get(0).getCreatedAt(), is(parseJSONDate("2024-06-26T09:10:26.643Z")));
+ assertThat(page.getSessions().get(0).getUpdatedAt(), is(parseJSONDate("2024-06-26T09:10:27.131Z")));
+ assertThat(page.getSessions().get(0).getAuthenticatedAt(), is(parseJSONDate("2024-06-26T09:10:26.643Z")));
+ assertThat(page.getSessions().get(0).getIdleExpiresAt(), is(parseJSONDate("2024-06-26T09:40:27.131Z")));
+ assertThat(page.getSessions().get(0).getExpiresAt(), is(parseJSONDate("2024-07-03T09:10:26.643Z")));
+
+ assertThat(page.getSessions().get(0).getDevice().getInitialASN(), is("1234"));
+ assertThat(page.getSessions().get(0).getDevice().getInitialIP(), is("203.0.113.1"));
+ assertThat(page.getSessions().get(0).getDevice().getLastUserAgent(), is("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"));
+ assertThat(page.getSessions().get(0).getDevice().getLastIP(), is("203.0.113.1"));
+ assertThat(page.getSessions().get(0).getDevice().getLastASN(), is("1234"));
+ assertThat(page.getSessions().get(0).getDevice().getLastUserAgent(), is("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"));
+
+ assertThat(page.getSessions().get(0).getClients().size(), is(1));
+ assertThat(page.getSessions().get(0).getClients().get(0).getClientId(), is("clientId1"));
+
+ assertThat(page.getSessions().get(0).getAuthentication().getMethods().size(), is(1));
+ assertThat(page.getSessions().get(0).getAuthentication().getMethods().get(0).getName(), is("pwd"));
+ assertThat(page.getSessions().get(0).getAuthentication().getMethods().get(0).getTimestamp(), is(parseJSONDate("2024-06-26T09:10:26.643Z")));
+ assertThat(page.getSessions().get(0).getAuthentication().getMethods().get(0).getType(), is(nullValue()));
+ }
+
+ @Test
+ public void shouldDeserializeWithTotals() throws Exception {
+ SessionsPage page = fromJSON(jsonWithTotals, SessionsPage.class);
+
+ assertThat(page.getTotal(), is(11));
+ }
+}
diff --git a/src/test/java/com/auth0/json/mgmt/users/refreshtokens/RefreshTokensPageTest.java b/src/test/java/com/auth0/json/mgmt/users/refreshtokens/RefreshTokensPageTest.java
deleted file mode 100644
index b0e701eb..00000000
--- a/src/test/java/com/auth0/json/mgmt/users/refreshtokens/RefreshTokensPageTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.auth0.json.mgmt.users.refreshtokens;
-
-import com.auth0.json.JsonTest;
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.nullValue;
-
-public class RefreshTokensPageTest extends JsonTest {
- private static final String json = "{\n\"tokens\": [\n{\n\"id\": \"tokenId1\",\n\"user_id\": \"userId1\",\n\"created_at\": \"2024-06-26T09:10:26.643Z\",\n\"updated_at\": \"2024-06-26T09:10:27.131Z\",\n\"expires_at\": \"2024-07-03T09:10:26.643Z\",\n\"client_id\": \"clientId1\",\n\"session_id\": \"sessionId1\",\n\"rotating\": false,\n\"resource_servers\": [\n{\n\"audience\": \"https://api.example.com\",\n\"scopes\": [\n\"read:examples\",\n\"write:examples\"\n]\n}\n]\n},\n{\n\"id\": \"tokenId2\",\n\"user_id\": \"userId1\",\n\"created_at\": \"2024-06-26T09:10:26.643Z\",\n\"updated_at\": \"2024-06-26T09:10:27.131Z\",\n\"expires_at\": \"2024-07-03T09:10:26.643Z\",\n\"client_id\": \"clientId2\",\n\"session_id\": \"sessionId2\",\n\"rotating\": true,\n\"resource_servers\": [\n{\n\"audience\": \"https://api.example.com\",\n\"scopes\": [\n\"read:examples\",\n\"write:examples\"\n]\n}\n]\n}\n],\n\"next\": \"token1\"\n}\n";
- private static final String jsonWithTotal = "{\n\"tokens\": [\n{\n\"id\": \"tokenId1\",\n\"user_id\": \"userId1\",\n\"created_at\": \"2024-06-26T09:10:26.643Z\",\n\"updated_at\": \"2024-06-26T09:10:27.131Z\",\n\"expires_at\": \"2024-07-03T09:10:26.643Z\",\n\"client_id\": \"clientId1\",\n\"session_id\": \"sessionId1\",\n\"rotating\": false,\n\"resource_servers\": [\n{\n\"audience\": \"https://api.example.com\",\n\"scopes\": [\n\"read:examples\",\n\"write:examples\"\n]\n}\n]\n},\n{\n\"id\": \"tokenId2\",\n\"user_id\": \"userId1\",\n\"created_at\": \"2024-06-26T09:10:26.643Z\",\n\"updated_at\": \"2024-06-26T09:10:27.131Z\",\n\"expires_at\": \"2024-07-03T09:10:26.643Z\",\n\"client_id\": \"clientId2\",\n\"session_id\": \"sessionId2\",\n\"rotating\": true,\n\"resource_servers\": [\n{\n\"audience\": \"https://api.example.com\",\n\"scopes\": [\n\"read:examples\",\n\"write:examples\"\n]\n}\n]\n}\n],\n\"next\": \"token1\",\n\"total\": 11\n}\n";
-
- @Test
- public void shouldDeserialize() throws Exception {
- RefreshTokensPage page = fromJSON(json, RefreshTokensPage.class);
-
- assertThat(page.getTotal(), is(nullValue()));
- assertThat(page.getNext(), is("token1"));
-
- assertThat(page.getTokens().size(), is(2));
- assertThat(page.getTokens().get(0).getId(), is("tokenId1"));
- assertThat(page.getTokens().get(0).getUserId(), is("userId1"));
- assertThat(page.getTokens().get(0).getCreatedAt(), is(parseJSONDate("2024-06-26T09:10:26.643Z")));
- assertThat(page.getTokens().get(0).getIdleExpiresAt(), is(nullValue()));
- assertThat(page.getTokens().get(0).getExpiresAt(), is(parseJSONDate("2024-07-03T09:10:26.643Z")));
- assertThat(page.getTokens().get(0).getClientId(), is("clientId1"));
- assertThat(page.getTokens().get(0).getSessionId(), is("sessionId1"));
- assertThat(page.getTokens().get(0).isRotating(), is(false));
-
- assertThat(page.getTokens().get(0).getResourceServers().size(), is(1));
- assertThat(page.getTokens().get(0).getResourceServers().get(0).getAudience(), is("https://api.example.com"));
- assertThat(page.getTokens().get(0).getResourceServers().get(0).getScopes().size(), is(2));
- assertThat(page.getTokens().get(0).getResourceServers().get(0).getScopes().get(0), is("read:examples"));
- assertThat(page.getTokens().get(0).getResourceServers().get(0).getScopes().get(1), is("write:examples"));
- }
-
- @Test
- public void shouldDeserializeWithTotal() throws Exception {
- RefreshTokensPage page = fromJSON(jsonWithTotal, RefreshTokensPage.class);
-
- assertThat(page.getTotal(), is(11));
- }
-}
diff --git a/src/test/java/com/auth0/json/mgmt/users/sessions/SessionsPageTest.java b/src/test/java/com/auth0/json/mgmt/users/sessions/SessionsPageTest.java
deleted file mode 100644
index 6fdcf2dc..00000000
--- a/src/test/java/com/auth0/json/mgmt/users/sessions/SessionsPageTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.auth0.json.mgmt.users.sessions;
-
-import com.auth0.json.JsonTest;
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.nullValue;
-
-public class SessionsPageTest extends JsonTest {
- private static final String json = "{\"sessions\":[{\"id\":\"sessionId1\",\n\"user_id\":\"userId1\",\n\"created_at\":\"2024-06-26T09:10:26.643Z\",\n\"updated_at\":\"2024-06-26T09:10:27.131Z\",\n\"authenticated_at\":\"2024-06-26T09:10:26.643Z\",\n\"authentication\":{\n\"methods\":[\n{\n\"name\":\"pwd\",\n\"timestamp\":\"2024-06-26T09:10:26.643Z\"\n}\n]\n},\n\"idle_expires_at\":\"2024-06-26T09:40:27.131Z\",\n\"expires_at\":\"2024-07-03T09:10:26.643Z\",\n\"device\":{\n\"initial_asn\":\"1234\",\n\"initial_ip\":\"203.0.113.1\",\n\"last_user_agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n\"last_ip\":\"203.0.113.1\",\n\"last_asn\":\"1234\"\n},\n\"clients\":[\n{\n\"client_id\":\"clientId1\"\n}\n]\n}\n],\n\"next\":\"sessionId1\"\n}\n";
- private static final String jsonWithTotals = "{\"sessions\":[{\"id\":\"sessionId1\",\n\"user_id\":\"userId1\",\n\"created_at\":\"2024-06-26T09:10:26.643Z\",\n\"updated_at\":\"2024-06-26T09:10:27.131Z\",\n\"authenticated_at\":\"2024-06-26T09:10:26.643Z\",\n\"authentication\":{\n\"methods\":[\n{\n\"name\":\"pwd\",\n\"timestamp\":\"2024-06-26T09:10:26.643Z\"\n}\n]\n},\n\"idle_expires_at\":\"2024-06-26T09:40:27.131Z\",\n\"expires_at\":\"2024-07-03T09:10:26.643Z\",\n\"device\":{\n\"initial_asn\":\"1234\",\n\"initial_ip\":\"203.0.113.1\",\n\"last_user_agent\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36\",\n\"last_ip\":\"203.0.113.1\",\n\"last_asn\":\"1234\"\n},\n\"clients\":[\n{\n\"client_id\":\"clientId1\"\n}\n]\n}\n],\n\"next\":\"sessionId1\",\n\"total\":11\n}\n";
-
- @Test
- public void shouldDeserialize() throws Exception {
- SessionsPage page = fromJSON(json, SessionsPage.class);
-
- assertThat(page.getTotal(), is(nullValue()));
- assertThat(page.getNext(), is("sessionId1"));
- assertThat(page.getSessions().size(), is(1));
- assertThat(page.getSessions().get(0).getId(), is("sessionId1"));
- assertThat(page.getSessions().get(0).getUserId(), is("userId1"));
- assertThat(page.getSessions().get(0).getCreatedAt(), is(parseJSONDate("2024-06-26T09:10:26.643Z")));
- assertThat(page.getSessions().get(0).getUpdatedAt(), is(parseJSONDate("2024-06-26T09:10:27.131Z")));
- assertThat(page.getSessions().get(0).getAuthenticatedAt(), is(parseJSONDate("2024-06-26T09:10:26.643Z")));
- assertThat(page.getSessions().get(0).getIdleExpiresAt(), is(parseJSONDate("2024-06-26T09:40:27.131Z")));
- assertThat(page.getSessions().get(0).getExpiresAt(), is(parseJSONDate("2024-07-03T09:10:26.643Z")));
-
- assertThat(page.getSessions().get(0).getDevice().getInitialASN(), is("1234"));
- assertThat(page.getSessions().get(0).getDevice().getInitialIP(), is("203.0.113.1"));
- assertThat(page.getSessions().get(0).getDevice().getLastUserAgent(), is("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"));
- assertThat(page.getSessions().get(0).getDevice().getLastIP(), is("203.0.113.1"));
- assertThat(page.getSessions().get(0).getDevice().getLastASN(), is("1234"));
-
- assertThat(page.getSessions().get(0).getClients().size(), is(1));
- assertThat(page.getSessions().get(0).getClients().get(0).getClientId(), is("clientId1"));
-
- assertThat(page.getSessions().get(0).getAuthentication().getMethods().size(), is(1));
- assertThat(page.getSessions().get(0).getAuthentication().getMethods().get(0).getName(), is("pwd"));
- assertThat(page.getSessions().get(0).getAuthentication().getMethods().get(0).getTimestamp(), is(parseJSONDate("2024-06-26T09:10:26.643Z")));
- assertThat(page.getSessions().get(0).getAuthentication().getMethods().get(0).getType(), is(nullValue()));
- }
-
- @Test
- public void shouldDeserializeWithTotals() throws Exception {
- SessionsPage page = fromJSON(jsonWithTotals, SessionsPage.class);
-
- assertThat(page.getTotal(), is(11));
- }
-}
diff --git a/src/test/resources/mgmt/refresh_token.json b/src/test/resources/mgmt/refresh_token.json
new file mode 100644
index 00000000..8ea37353
--- /dev/null
+++ b/src/test/resources/mgmt/refresh_token.json
@@ -0,0 +1,28 @@
+{
+ "id": "tokenId1",
+ "user_id": "userId1",
+ "created_at": "2024-06-26T09:10:26.643Z",
+ "idle_expires_at": "2024-06-26T09:10:27.131Z",
+ "expires_at": "2024-07-03T09:10:26.643Z",
+ "device": {
+ "initial_asn": "1234",
+ "initial_ip": "203.0.113.1",
+ "initial_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
+ "last_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
+ "last_ip": "203.0.113.1",
+ "last_asn": "1234"
+ },
+ "client_id": "clientId1",
+ "session_id": "sessionId1",
+ "rotating": false,
+ "resource_servers": [
+ {
+ "audience": "https://api.example.com",
+ "scopes": [
+ "read:examples",
+ "write:examples"
+ ]
+ }
+ ],
+ "last_exchanged_at": "2024-07-03T09:10:26.643Z"
+}
diff --git a/src/test/resources/mgmt/session.json b/src/test/resources/mgmt/session.json
new file mode 100644
index 00000000..07251c3c
--- /dev/null
+++ b/src/test/resources/mgmt/session.json
@@ -0,0 +1,30 @@
+{
+ "id": "sessionId1",
+ "user_id": "userId1",
+ "created_at": "2024-09-04T06:41:46.145Z",
+ "updated_at": "2024-09-04T06:41:46.621Z",
+ "authenticated_at": "2024-09-04T06:41:46.145Z",
+ "authentication": {
+ "methods": [
+ {
+ "name": "federated",
+ "timestamp": "2024-09-04T06:41:46.145Z"
+ }
+ ]
+ },
+ "idle_expires_at": "2024-09-07T06:41:46.622Z",
+ "expires_at": "2024-09-11T06:41:46.145Z",
+ "device": {
+ "initial_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
+ "initial_asn": "1234",
+ "initial_ip": "134.1.15.0",
+ "last_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
+ "last_ip": "134.1.15.0",
+ "last_asn": "1234"
+ },
+ "clients": [
+ {
+ "client_id": "clientId1"
+ }
+ ]
+}
diff --git a/src/test/resources/mgmt/user_refresh_tokens.json b/src/test/resources/mgmt/user_refresh_tokens.json
index c1ed7aa9..18c77eb6 100644
--- a/src/test/resources/mgmt/user_refresh_tokens.json
+++ b/src/test/resources/mgmt/user_refresh_tokens.json
@@ -4,8 +4,16 @@
"id": "tokenId1",
"user_id": "userId1",
"created_at": "2024-06-26T09:10:26.643Z",
- "updated_at": "2024-06-26T09:10:27.131Z",
+ "idle_expires_at": "2024-06-26T09:10:27.131Z",
"expires_at": "2024-07-03T09:10:26.643Z",
+ "device": {
+ "initial_asn": "1234",
+ "initial_ip": "203.0.113.1",
+ "initial_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
+ "last_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
+ "last_ip": "203.0.113.1",
+ "last_asn": "1234"
+ },
"client_id": "clientId1",
"session_id": "sessionId1",
"rotating": false,
@@ -17,14 +25,24 @@
"write:examples"
]
}
- ]
+ ],
+ "last_exchanged_at": "2024-07-03T09:10:26.643Z"
},
{
"id": "tokenId2",
"user_id": "userId1",
"created_at": "2024-06-26T09:10:26.643Z",
"updated_at": "2024-06-26T09:10:27.131Z",
+ "idle_expires_at": "2024-06-26T09:10:27.131Z",
"expires_at": "2024-07-03T09:10:26.643Z",
+ "device": {
+ "initial_asn": "1234",
+ "initial_ip": "203.0.113.1",
+ "initial_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
+ "last_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
+ "last_ip": "203.0.113.1",
+ "last_asn": "1234"
+ },
"client_id": "clientId2",
"session_id": "sessionId2",
"rotating": true,
@@ -36,7 +54,8 @@
"write:examples"
]
}
- ]
+ ],
+ "last_exchanged_at": "2024-07-03T09:10:26.643Z"
}
],
"next": "token1",
diff --git a/src/test/resources/mgmt/user_sessions.json b/src/test/resources/mgmt/user_sessions.json
index 750b127e..71c9b754 100644
--- a/src/test/resources/mgmt/user_sessions.json
+++ b/src/test/resources/mgmt/user_sessions.json
@@ -17,6 +17,7 @@
"idle_expires_at": "2024-06-26T09:40:27.131Z",
"expires_at": "2024-07-03T09:10:26.643Z",
"device": {
+ "initial_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
"initial_asn": "1234",
"initial_ip": "203.0.113.1",
"last_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",