diff --git a/src/management/__generated/managers/sessions-manager.ts b/src/management/__generated/managers/sessions-manager.ts index 462b3e2b8..24f327fe7 100644 --- a/src/management/__generated/managers/sessions-manager.ts +++ b/src/management/__generated/managers/sessions-manager.ts @@ -3,6 +3,7 @@ import type { InitOverride, ApiResponse } from '../../../lib/runtime.js'; import type { GetSession200Response, DeleteSessionRequest, + RevokeSessionRequest, GetSessionRequest, } from '../models/index.js'; @@ -35,6 +36,31 @@ export class SessionsManager extends BaseAPI { return runtime.VoidApiResponse.fromResponse(response); } + /** + * Revokes a session by ID and all associated refresh tokens. + * + * @throws {RequiredError} + */ + async revoke( + requestParameters: RevokeSessionRequest, + initOverrides?: InitOverride + ): Promise> { + runtime.validateRequiredRequestParams(requestParameters, ['id']); + + const response = await this.request( + { + path: `/sessions/{id}/revoke`.replace( + '{id}', + encodeURIComponent(String(requestParameters.id)) + ), + method: 'POST', + }, + initOverrides + ); + + return runtime.VoidApiResponse.fromResponse(response); + } + /** * Retrieve session information. * Get session diff --git a/src/management/__generated/models/index.ts b/src/management/__generated/models/index.ts index 051e25d9b..11221f25e 100644 --- a/src/management/__generated/models/index.ts +++ b/src/management/__generated/models/index.ts @@ -21213,6 +21213,16 @@ export interface DeleteSessionRequest { */ id: string; } +/** + * + */ +export interface RevokeSessionRequest { + /** + * ID of the session to revoke. + * + */ + id: string; +} /** * */ diff --git a/test/management/sessions.test.ts b/test/management/sessions.test.ts index c11fd2434..fc18fdee9 100644 --- a/test/management/sessions.test.ts +++ b/test/management/sessions.test.ts @@ -133,6 +133,54 @@ describe('SessionsManager', () => { sessions.delete({ id }).then(() => { expect(request.isDone()).toBe(true); + done(); + }); + }); + }); + describe('#revoke', () => { + const id = '6'; + + let request: nock.Scope; + + beforeEach(() => { + request = nock(API_URL).post(`/sessions/${id}/revoke`).reply(200, {}); + }); + + it('should return a promise when no callback is given', (done) => { + sessions.revoke({ id }).then(done.bind(null, null)); + }); + + it(`should perform a revoke request to /sessions/${id}/revoke`, (done) => { + sessions.revoke({ id }).then(() => { + expect(request.isDone()).toBe(true); + + done(); + }); + }); + + it('should pass any errors to the promise catch handler', (done) => { + nock.cleanAll(); + + nock(API_URL).post(`/sessions/${id}/revoke`).reply(500, {}); + + sessions.revoke({ id }).catch((err) => { + expect(err).toBeDefined(); + + done(); + }); + }); + + it('should include the token in the authorization header', (done) => { + nock.cleanAll(); + + const request = nock(API_URL) + .post(`/sessions/${id}/revoke`) + .matchHeader('authorization', `Bearer ${token}`) + .reply(200, {}); + + sessions.revoke({ id }).then(() => { + expect(request.isDone()).toBe(true); + done(); }); });