Skip to content

Commit 8d3966f

Browse files
authored
feat(iam): add SCIM related endpoints (#2562)
1 parent dadc9d3 commit 8d3966f

File tree

5 files changed

+237
-0
lines changed

5 files changed

+237
-0
lines changed

packages_generated/iam/src/v1alpha1/api.gen.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import {
3939
marshalValidateUserMFAOTPRequest,
4040
unmarshalAPIKey,
4141
unmarshalApplication,
42+
unmarshalCreateScimTokenResponse,
4243
unmarshalEncodedJWT,
4344
unmarshalGetUserConnectionsResponse,
4445
unmarshalGroup,
@@ -56,6 +57,7 @@ import {
5657
unmarshalListRulesResponse,
5758
unmarshalListSSHKeysResponse,
5859
unmarshalListSamlCertificatesResponse,
60+
unmarshalListScimTokensResponse,
5961
unmarshalListUsersResponse,
6062
unmarshalLog,
6163
unmarshalMFAOTP,
@@ -67,6 +69,7 @@ import {
6769
unmarshalSSHKey,
6870
unmarshalSaml,
6971
unmarshalSamlCertificate,
72+
unmarshalScim,
7073
unmarshalSetRulesResponse,
7174
unmarshalUser,
7275
unmarshalValidateUserMFAOTPResponse,
@@ -84,6 +87,8 @@ import type {
8487
CreateJWTRequest,
8588
CreatePolicyRequest,
8689
CreateSSHKeyRequest,
90+
CreateScimTokenRequest,
91+
CreateScimTokenResponse,
8792
CreateUserMFAOTPRequest,
8893
CreateUserRequest,
8994
DeleteAPIKeyRequest,
@@ -94,9 +99,12 @@ import type {
9499
DeleteSSHKeyRequest,
95100
DeleteSamlCertificateRequest,
96101
DeleteSamlRequest,
102+
DeleteScimRequest,
103+
DeleteScimTokenRequest,
97104
DeleteUserMFAOTPRequest,
98105
DeleteUserRequest,
99106
EnableOrganizationSamlRequest,
107+
EnableOrganizationScimRequest,
100108
EncodedJWT,
101109
GetAPIKeyRequest,
102110
GetApplicationRequest,
@@ -141,6 +149,8 @@ import type {
141149
ListSSHKeysResponse,
142150
ListSamlCertificatesRequest,
143151
ListSamlCertificatesResponse,
152+
ListScimTokensRequest,
153+
ListScimTokensResponse,
144154
ListUsersRequest,
145155
ListUsersResponse,
146156
LockUserRequest,
@@ -157,6 +167,7 @@ import type {
157167
SSHKey,
158168
Saml,
159169
SamlCertificate,
170+
Scim,
160171
SetGroupMembersRequest,
161172
SetOrganizationAliasRequest,
162173
SetRulesRequest,
@@ -1548,4 +1559,58 @@ export class API extends ParentAPI {
15481559
method: 'DELETE',
15491560
path: `/iam/v1alpha1/saml-certificates/${validatePathParam('certificateId', request.certificateId)}`,
15501561
})
1562+
1563+
enableOrganizationScim = (
1564+
request: Readonly<EnableOrganizationScimRequest> = {},
1565+
) =>
1566+
this.client.fetch<Scim>(
1567+
{
1568+
body: '{}',
1569+
headers: jsonContentHeaders,
1570+
method: 'POST',
1571+
path: `/iam/v1alpha1/organizations/${validatePathParam('organizationId', request.organizationId ?? this.client.settings.defaultOrganizationId)}/scim`,
1572+
},
1573+
unmarshalScim,
1574+
)
1575+
1576+
deleteScim = (request: Readonly<DeleteScimRequest>) =>
1577+
this.client.fetch<void>({
1578+
method: 'DELETE',
1579+
path: `/iam/v1alpha1/scim/${validatePathParam('scimId', request.scimId)}`,
1580+
})
1581+
1582+
protected pageOfListScimTokens = (request: Readonly<ListScimTokensRequest>) =>
1583+
this.client.fetch<ListScimTokensResponse>(
1584+
{
1585+
method: 'GET',
1586+
path: `/iam/v1alpha1/scim/${validatePathParam('scimId', request.scimId)}/tokens`,
1587+
urlParams: urlParams(
1588+
['order_by', request.orderBy],
1589+
['page', request.page],
1590+
[
1591+
'page_size',
1592+
request.pageSize ?? this.client.settings.defaultPageSize,
1593+
],
1594+
),
1595+
},
1596+
unmarshalListScimTokensResponse,
1597+
)
1598+
1599+
listScimTokens = (request: Readonly<ListScimTokensRequest>) =>
1600+
enrichForPagination('scimTokens', this.pageOfListScimTokens, request)
1601+
1602+
createScimToken = (request: Readonly<CreateScimTokenRequest>) =>
1603+
this.client.fetch<CreateScimTokenResponse>(
1604+
{
1605+
method: 'POST',
1606+
path: `/iam/v1alpha1/scim/${validatePathParam('scimId', request.scimId)}/tokens`,
1607+
},
1608+
unmarshalCreateScimTokenResponse,
1609+
)
1610+
1611+
deleteScimToken = (request: Readonly<DeleteScimTokenRequest>) =>
1612+
this.client.fetch<void>({
1613+
method: 'DELETE',
1614+
path: `/iam/v1alpha1/scim-tokens/${validatePathParam('tokenId', request.tokenId)}`,
1615+
})
15511616
}

packages_generated/iam/src/v1alpha1/index.gen.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ export type {
1919
CreateJWTRequest,
2020
CreatePolicyRequest,
2121
CreateSSHKeyRequest,
22+
CreateScimTokenRequest,
23+
CreateScimTokenResponse,
2224
CreateUserMFAOTPRequest,
2325
CreateUserRequest,
2426
CreateUserRequestMember,
@@ -30,9 +32,12 @@ export type {
3032
DeleteSSHKeyRequest,
3133
DeleteSamlCertificateRequest,
3234
DeleteSamlRequest,
35+
DeleteScimRequest,
36+
DeleteScimTokenRequest,
3337
DeleteUserMFAOTPRequest,
3438
DeleteUserRequest,
3539
EnableOrganizationSamlRequest,
40+
EnableOrganizationScimRequest,
3641
EncodedJWT,
3742
GetAPIKeyRequest,
3843
GetApplicationRequest,
@@ -88,6 +93,9 @@ export type {
8893
ListSSHKeysResponse,
8994
ListSamlCertificatesRequest,
9095
ListSamlCertificatesResponse,
96+
ListScimTokensRequest,
97+
ListScimTokensRequestOrderBy,
98+
ListScimTokensResponse,
9199
ListUsersRequest,
92100
ListUsersRequestOrderBy,
93101
ListUsersResponse,
@@ -117,6 +125,8 @@ export type {
117125
SamlCertificateType,
118126
SamlServiceProvider,
119127
SamlStatus,
128+
Scim,
129+
ScimToken,
120130
SetGroupMembersRequest,
121131
SetOrganizationAliasRequest,
122132
SetRulesRequest,

packages_generated/iam/src/v1alpha1/marshalling.gen.ts

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import type {
2424
CreateJWTRequest,
2525
CreatePolicyRequest,
2626
CreateSSHKeyRequest,
27+
CreateScimTokenResponse,
2728
CreateUserRequest,
2829
CreateUserRequestMember,
2930
EncodedJWT,
@@ -45,6 +46,7 @@ import type {
4546
ListRulesResponse,
4647
ListSSHKeysResponse,
4748
ListSamlCertificatesResponse,
49+
ListScimTokensResponse,
4850
ListUsersResponse,
4951
Log,
5052
MFAOTP,
@@ -64,6 +66,8 @@ import type {
6466
Saml,
6567
SamlCertificate,
6668
SamlServiceProvider,
69+
Scim,
70+
ScimToken,
6771
SetGroupMembersRequest,
6872
SetOrganizationAliasRequest,
6973
SetRulesRequest,
@@ -321,6 +325,36 @@ export const unmarshalUser = (data: unknown): User => {
321325
} as User
322326
}
323327

328+
const unmarshalScimToken = (data: unknown): ScimToken => {
329+
if (!isJSONObject(data)) {
330+
throw new TypeError(
331+
`Unmarshalling the type 'ScimToken' failed as data isn't a dictionary.`,
332+
)
333+
}
334+
335+
return {
336+
createdAt: unmarshalDate(data.created_at),
337+
expiresAt: unmarshalDate(data.expires_at),
338+
id: data.id,
339+
scimId: data.scim_id,
340+
} as ScimToken
341+
}
342+
343+
export const unmarshalCreateScimTokenResponse = (
344+
data: unknown,
345+
): CreateScimTokenResponse => {
346+
if (!isJSONObject(data)) {
347+
throw new TypeError(
348+
`Unmarshalling the type 'CreateScimTokenResponse' failed as data isn't a dictionary.`,
349+
)
350+
}
351+
352+
return {
353+
bearerToken: data.bearer_token,
354+
token: data.token ? unmarshalScimToken(data.token) : undefined,
355+
} as CreateScimTokenResponse
356+
}
357+
324358
export const unmarshalEncodedJWT = (data: unknown): EncodedJWT => {
325359
if (!isJSONObject(data)) {
326360
throw new TypeError(
@@ -644,6 +678,21 @@ export const unmarshalListSamlCertificatesResponse = (
644678
} as ListSamlCertificatesResponse
645679
}
646680

681+
export const unmarshalListScimTokensResponse = (
682+
data: unknown,
683+
): ListScimTokensResponse => {
684+
if (!isJSONObject(data)) {
685+
throw new TypeError(
686+
`Unmarshalling the type 'ListScimTokensResponse' failed as data isn't a dictionary.`,
687+
)
688+
}
689+
690+
return {
691+
scimTokens: unmarshalArrayOfObject(data.scim_tokens, unmarshalScimToken),
692+
totalCount: data.total_count,
693+
} as ListScimTokensResponse
694+
}
695+
647696
export const unmarshalListUsersResponse = (
648697
data: unknown,
649698
): ListUsersResponse => {
@@ -754,6 +803,19 @@ export const unmarshalSaml = (data: unknown): Saml => {
754803
} as Saml
755804
}
756805

806+
export const unmarshalScim = (data: unknown): Scim => {
807+
if (!isJSONObject(data)) {
808+
throw new TypeError(
809+
`Unmarshalling the type 'Scim' failed as data isn't a dictionary.`,
810+
)
811+
}
812+
813+
return {
814+
createdAt: unmarshalDate(data.created_at),
815+
id: data.id,
816+
} as Scim
817+
}
818+
757819
export const unmarshalSetRulesResponse = (data: unknown): SetRulesResponse => {
758820
if (!isJSONObject(data)) {
759821
throw new TypeError(

0 commit comments

Comments
 (0)