Skip to content

Commit a4ebbb8

Browse files
feat(iam): add ListJWTs, GetJWT, and DeleteJWT (#493)
Co-authored-by: Vincent Germain <[email protected]>
1 parent 54f7dc7 commit a4ebbb8

File tree

5 files changed

+165
-0
lines changed

5 files changed

+165
-0
lines changed

packages/clients/src/api/iam/v1alpha1/api.gen.ts

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@ import {
2525
unmarshalAPIKey,
2626
unmarshalApplication,
2727
unmarshalGroup,
28+
unmarshalJWT,
2829
unmarshalListAPIKeysResponse,
2930
unmarshalListApplicationsResponse,
3031
unmarshalListGroupsResponse,
32+
unmarshalListJWTsResponse,
3133
unmarshalListPermissionSetsResponse,
3234
unmarshalListPoliciesResponse,
3335
unmarshalListQuotaResponse,
@@ -53,23 +55,28 @@ import type {
5355
DeleteAPIKeyRequest,
5456
DeleteApplicationRequest,
5557
DeleteGroupRequest,
58+
DeleteJWTRequest,
5659
DeletePolicyRequest,
5760
DeleteSSHKeyRequest,
5861
DeleteUserRequest,
5962
GetAPIKeyRequest,
6063
GetApplicationRequest,
6164
GetGroupRequest,
65+
GetJWTRequest,
6266
GetPolicyRequest,
6367
GetQuotumRequest,
6468
GetSSHKeyRequest,
6569
GetUserRequest,
6670
Group,
71+
JWT,
6772
ListAPIKeysRequest,
6873
ListAPIKeysResponse,
6974
ListApplicationsRequest,
7075
ListApplicationsResponse,
7176
ListGroupsRequest,
7277
ListGroupsResponse,
78+
ListJWTsRequest,
79+
ListJWTsResponse,
7380
ListPermissionSetsRequest,
7481
ListPermissionSetsResponse,
7582
ListPoliciesRequest,
@@ -931,4 +938,58 @@ export class API extends ParentAPI {
931938
},
932939
unmarshalQuotum,
933940
)
941+
942+
protected pageOfListJWTs = (request: Readonly<ListJWTsRequest>) =>
943+
this.client.fetch<ListJWTsResponse>(
944+
{
945+
method: 'GET',
946+
path: `/iam/v1alpha1/jwts`,
947+
urlParams: urlParams(
948+
['audience_id', request.audienceId],
949+
['expired', request.expired],
950+
['order_by', request.orderBy ?? 'created_at_asc'],
951+
['page', request.page],
952+
[
953+
'page_size',
954+
request.pageSize ?? this.client.settings.defaultPageSize,
955+
],
956+
),
957+
},
958+
unmarshalListJWTsResponse,
959+
)
960+
961+
/**
962+
* List JWTs
963+
*
964+
* @param request - The request {@link ListJWTsRequest}
965+
* @returns A Promise of ListJWTsResponse
966+
*/
967+
listJWTs = (request: Readonly<ListJWTsRequest>) =>
968+
enrichForPagination('jwts', this.pageOfListJWTs, request)
969+
970+
/**
971+
* Get a JWT
972+
*
973+
* @param request - The request {@link GetJWTRequest}
974+
* @returns A Promise of JWT
975+
*/
976+
getJWT = (request: Readonly<GetJWTRequest>) =>
977+
this.client.fetch<JWT>(
978+
{
979+
method: 'GET',
980+
path: `/iam/v1alpha1/jwts/${validatePathParam('jti', request.jti)}`,
981+
},
982+
unmarshalJWT,
983+
)
984+
985+
/**
986+
* Delete a JWT
987+
*
988+
* @param request - The request {@link DeleteJWTRequest}
989+
*/
990+
deleteJWT = (request: Readonly<DeleteJWTRequest>) =>
991+
this.client.fetch<void>({
992+
method: 'DELETE',
993+
path: `/iam/v1alpha1/jwts/${validatePathParam('jti', request.jti)}`,
994+
})
934995
}

packages/clients/src/api/iam/v1alpha1/index.gen.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,20 @@ export type {
1515
DeleteAPIKeyRequest,
1616
DeleteApplicationRequest,
1717
DeleteGroupRequest,
18+
DeleteJWTRequest,
1819
DeletePolicyRequest,
1920
DeleteSSHKeyRequest,
2021
DeleteUserRequest,
2122
GetAPIKeyRequest,
2223
GetApplicationRequest,
2324
GetGroupRequest,
25+
GetJWTRequest,
2426
GetPolicyRequest,
2527
GetQuotumRequest,
2628
GetSSHKeyRequest,
2729
GetUserRequest,
2830
Group,
31+
JWT,
2932
ListAPIKeysRequest,
3033
ListAPIKeysRequestOrderBy,
3134
ListAPIKeysResponse,
@@ -35,6 +38,9 @@ export type {
3538
ListGroupsRequest,
3639
ListGroupsRequestOrderBy,
3740
ListGroupsResponse,
41+
ListJWTsRequest,
42+
ListJWTsRequestOrderBy,
43+
ListJWTsResponse,
3844
ListPermissionSetsRequest,
3945
ListPermissionSetsRequestOrderBy,
4046
ListPermissionSetsResponse,

packages/clients/src/api/iam/v1alpha1/marshalling.gen.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@ import type {
1818
CreatePolicyRequest,
1919
CreateSSHKeyRequest,
2020
Group,
21+
JWT,
2122
ListAPIKeysResponse,
2223
ListApplicationsResponse,
2324
ListGroupsResponse,
25+
ListJWTsResponse,
2426
ListPermissionSetsResponse,
2527
ListPoliciesResponse,
2628
ListQuotaResponse,
@@ -105,6 +107,25 @@ export const unmarshalGroup = (data: unknown) => {
105107
} as Group
106108
}
107109

110+
export const unmarshalJWT = (data: unknown) => {
111+
if (!isJSONObject(data)) {
112+
throw new TypeError(
113+
`Unmarshalling the type 'JWT' failed as data isn't a dictionary.`,
114+
)
115+
}
116+
117+
return {
118+
audienceId: data.audience_id,
119+
createdAt: unmarshalDate(data.created_at),
120+
expiresAt: unmarshalDate(data.expires_at),
121+
ip: data.ip,
122+
issuerId: data.issuer_id,
123+
jti: data.jti,
124+
updatedAt: unmarshalDate(data.updated_at),
125+
userAgent: data.user_agent,
126+
} as JWT
127+
}
128+
108129
const unmarshalPermissionSet = (data: unknown) => {
109130
if (!isJSONObject(data)) {
110131
throw new TypeError(
@@ -260,6 +281,19 @@ export const unmarshalListGroupsResponse = (data: unknown) => {
260281
} as ListGroupsResponse
261282
}
262283

284+
export const unmarshalListJWTsResponse = (data: unknown) => {
285+
if (!isJSONObject(data)) {
286+
throw new TypeError(
287+
`Unmarshalling the type 'ListJWTsResponse' failed as data isn't a dictionary.`,
288+
)
289+
}
290+
291+
return {
292+
jwts: unmarshalArrayOfObject(data.jwts, unmarshalJWT),
293+
totalCount: data.total_count,
294+
} as ListJWTsResponse
295+
}
296+
263297
export const unmarshalListPermissionSetsResponse = (data: unknown) => {
264298
if (!isJSONObject(data)) {
265299
throw new TypeError(

packages/clients/src/api/iam/v1alpha1/types.gen.ts

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ export type ListGroupsRequestOrderBy =
2929
| 'name_asc'
3030
| 'name_desc'
3131

32+
export type ListJWTsRequestOrderBy =
33+
| 'created_at_asc'
34+
| 'created_at_desc'
35+
| 'updated_at_asc'
36+
| 'updated_at_desc'
37+
3238
export type ListPermissionSetsRequestOrderBy =
3339
| 'name_asc'
3440
| 'name_desc'
@@ -145,6 +151,26 @@ export interface Group {
145151
applicationIds: string[]
146152
}
147153

154+
/** Jwt */
155+
export interface JWT {
156+
/** JWT ID */
157+
jti: string
158+
/** ID of the user who issued the JWT */
159+
issuerId: string
160+
/** ID of the user targeted by the JWT */
161+
audienceId: string
162+
/** Creation date of the JWT */
163+
createdAt?: Date
164+
/** Last update date of the JWT */
165+
updatedAt?: Date
166+
/** Expiration date of the JWT */
167+
expiresAt?: Date
168+
/** IP address used during the creation of the JWT */
169+
ip: string
170+
/** User-agent used during the creation of the JWT */
171+
userAgent: string
172+
}
173+
148174
/** List api keys response */
149175
export interface ListAPIKeysResponse {
150176
/** List of API keys */
@@ -169,6 +195,11 @@ export interface ListGroupsResponse {
169195
totalCount: number
170196
}
171197

198+
export interface ListJWTsResponse {
199+
jwts: JWT[]
200+
totalCount: number
201+
}
202+
172203
/** List permission sets response */
173204
export interface ListPermissionSetsResponse {
174205
/** List of permission sets */
@@ -843,3 +874,26 @@ export type GetQuotumRequest = {
843874
/** ID of the organization */
844875
organizationId?: string
845876
}
877+
878+
export type ListJWTsRequest = {
879+
/** Criteria for sorting results */
880+
orderBy?: ListJWTsRequestOrderBy
881+
/** ID of the user to search */
882+
audienceId: string
883+
/** Number of results per page. Value must be between 1 and 100 */
884+
pageSize?: number
885+
/** Number of page. Value must be greater to 1 */
886+
page?: number
887+
/** Filter out expired JWTs or not */
888+
expired?: boolean
889+
}
890+
891+
export type GetJWTRequest = {
892+
/** JWT ID of the JWT to get */
893+
jti: string
894+
}
895+
896+
export type DeleteJWTRequest = {
897+
/** JWT ID of the JWT to delete */
898+
jti: string
899+
}

packages/clients/src/api/iam/v1alpha1/validation-rules.gen.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,16 @@ export const ListGroupsRequest = {
102102
},
103103
}
104104

105+
export const ListJWTsRequest = {
106+
page: {
107+
greaterThanOrEqual: 1,
108+
},
109+
pageSize: {
110+
greaterThanOrEqual: 1,
111+
lessThanOrEqual: 100,
112+
},
113+
}
114+
105115
export const ListPermissionSetsRequest = {
106116
page: {
107117
greaterThanOrEqual: 1,

0 commit comments

Comments
 (0)