keycloak-api-manager 5.0.1 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -1
- package/docs/api/attack-detection.md +42 -0
- package/docs/api/authentication-management.md +160 -0
- package/docs/api/client-policies.md +66 -0
- package/docs/api/client-scopes.md +194 -0
- package/docs/api/clients.md +450 -0
- package/docs/api/components.md +57 -0
- package/docs/api/configuration.md +447 -0
- package/docs/api/groups.md +129 -0
- package/docs/api/identity-providers.md +98 -0
- package/docs/api/organizations.md +615 -0
- package/docs/api/realms.md +277 -0
- package/docs/api/roles.md +102 -0
- package/docs/api/server-info.md +38 -0
- package/docs/api/user-profile.md +63 -0
- package/docs/api/users.md +1563 -0
- package/docs/api-reference.md +163 -0
- package/package.json +1 -1
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
# Clients API
|
|
2
|
+
|
|
3
|
+
Comprehensive client administration: CRUD, roles, secrets, scopes, sessions, authorization services, keys, protocol mappers, and evaluation endpoints.
|
|
4
|
+
|
|
5
|
+
**Namespace:** `KeycloakManager.clients`
|
|
6
|
+
|
|
7
|
+
## 1) Client CRUD
|
|
8
|
+
|
|
9
|
+
### create(client_dictionary)
|
|
10
|
+
- **Required**: `client_dictionary.clientId` (string)
|
|
11
|
+
- **Optional**: `name`, `enabled`, `protocol`, `publicClient`, `secret`, `redirectUris`, `webOrigins`, `serviceAccountsEnabled`, `authorizationServicesEnabled`, etc.
|
|
12
|
+
- **Returns**: Promise<object>
|
|
13
|
+
|
|
14
|
+
### find(filter)
|
|
15
|
+
- **Optional**: `clientId`, `search`, `first`, `max`, `viewableOnly`
|
|
16
|
+
- **Returns**: Promise<Array<ClientRepresentation>>
|
|
17
|
+
|
|
18
|
+
### findOne(filter)
|
|
19
|
+
- **Required**: `filter.id` (client UUID)
|
|
20
|
+
- **Returns**: Promise<ClientRepresentation>
|
|
21
|
+
|
|
22
|
+
### update(filter, clientRepresentation)
|
|
23
|
+
- **Required**: `filter.id` (client UUID)
|
|
24
|
+
- **Required**: `clientRepresentation` (partial/full)
|
|
25
|
+
- **Returns**: Promise<void>
|
|
26
|
+
|
|
27
|
+
### del(filter)
|
|
28
|
+
- **Required**: `filter.id` (client UUID)
|
|
29
|
+
- **Returns**: Promise<void>
|
|
30
|
+
|
|
31
|
+
## 2) Client Roles
|
|
32
|
+
|
|
33
|
+
### createRole(role_parameters)
|
|
34
|
+
- **Required**: `role_parameters.id` (client UUID)
|
|
35
|
+
- **Required**: `role_parameters.name` (role name)
|
|
36
|
+
- **Optional**: `description`, `composite`, `attributes`
|
|
37
|
+
- **Returns**: Promise<object>
|
|
38
|
+
|
|
39
|
+
### findRole(filter)
|
|
40
|
+
- **Required**: `filter.id` (client UUID)
|
|
41
|
+
- **Required**: `filter.roleName` (role name)
|
|
42
|
+
- **Returns**: Promise<RoleRepresentation>
|
|
43
|
+
|
|
44
|
+
### updateRole(filter, roleRepresentation)
|
|
45
|
+
- **Required**: `filter.id` (client UUID)
|
|
46
|
+
- **Required**: `filter.roleName` (role name)
|
|
47
|
+
- **Required**: `roleRepresentation`
|
|
48
|
+
- **Returns**: Promise<void>
|
|
49
|
+
|
|
50
|
+
### delRole(filter)
|
|
51
|
+
- **Required**: `filter.id` (client UUID)
|
|
52
|
+
- **Required**: `filter.roleName` (role name)
|
|
53
|
+
- **Returns**: Promise<void>
|
|
54
|
+
|
|
55
|
+
### listRoles(filter)
|
|
56
|
+
- **Required**: `filter.id` (client UUID)
|
|
57
|
+
- **Optional**: `first`, `max`, `search`, `briefRepresentation`
|
|
58
|
+
- **Returns**: Promise<Array<RoleRepresentation>>
|
|
59
|
+
|
|
60
|
+
## 3) Secrets and Registration
|
|
61
|
+
|
|
62
|
+
### getClientSecret(filter)
|
|
63
|
+
- **Required**: `filter.id` (client UUID)
|
|
64
|
+
- **Returns**: Promise<{type,value}>
|
|
65
|
+
|
|
66
|
+
### generateNewClientSecret(filter)
|
|
67
|
+
- **Required**: `filter.id` (client UUID)
|
|
68
|
+
- **Returns**: Promise<{type,value}>
|
|
69
|
+
|
|
70
|
+
### generateRegistrationAccessToken(filter)
|
|
71
|
+
- **Required**: `filter.id` (client UUID)
|
|
72
|
+
- **Returns**: Promise<object>
|
|
73
|
+
|
|
74
|
+
### invalidateSecret(filter)
|
|
75
|
+
- **Required**: `filter.id` (client UUID)
|
|
76
|
+
- **Returns**: Promise<void>
|
|
77
|
+
|
|
78
|
+
## 4) Providers and Service Account
|
|
79
|
+
|
|
80
|
+
### getInstallationProviders(filter)
|
|
81
|
+
- **Required**: `filter.id` (client UUID)
|
|
82
|
+
- **Optional**: `filter.providerId` (specific provider, wrapper supports direct endpoint)
|
|
83
|
+
- **Returns**: Promise<Array|object|string>
|
|
84
|
+
|
|
85
|
+
### listPolicyProviders(filter)
|
|
86
|
+
- **Required**: `filter.id` (client UUID)
|
|
87
|
+
- **Optional**: policy provider filters depending on Keycloak version
|
|
88
|
+
- **Returns**: Promise<Array<object>>
|
|
89
|
+
|
|
90
|
+
### getServiceAccountUser(filter)
|
|
91
|
+
- **Required**: `filter.id` (client UUID)
|
|
92
|
+
- **Returns**: Promise<UserRepresentation>
|
|
93
|
+
|
|
94
|
+
## 5) Client Scopes on Client
|
|
95
|
+
|
|
96
|
+
### addDefaultClientScope(filter)
|
|
97
|
+
- **Required**: `filter.id` (client UUID)
|
|
98
|
+
- **Required**: `filter.clientScopeId` (scope UUID)
|
|
99
|
+
- **Returns**: Promise<void>
|
|
100
|
+
|
|
101
|
+
### delDefaultClientScope(filter)
|
|
102
|
+
- **Required**: `filter.id` (client UUID)
|
|
103
|
+
- **Required**: `filter.clientScopeId`
|
|
104
|
+
- **Returns**: Promise<void>
|
|
105
|
+
|
|
106
|
+
### addOptionalClientScope(filter)
|
|
107
|
+
- **Required**: `filter.id` (client UUID)
|
|
108
|
+
- **Required**: `filter.clientScopeId`
|
|
109
|
+
- **Returns**: Promise<void>
|
|
110
|
+
|
|
111
|
+
### delOptionalClientScope(filter)
|
|
112
|
+
- **Required**: `filter.id` (client UUID)
|
|
113
|
+
- **Required**: `filter.clientScopeId`
|
|
114
|
+
- **Returns**: Promise<void>
|
|
115
|
+
|
|
116
|
+
### listDefaultClientScopes(filter)
|
|
117
|
+
- **Required**: `filter.id` (client UUID)
|
|
118
|
+
- **Returns**: Promise<Array<ClientScopeRepresentation>>
|
|
119
|
+
|
|
120
|
+
### listOptionalClientScopes(filter)
|
|
121
|
+
- **Required**: `filter.id` (client UUID)
|
|
122
|
+
- **Returns**: Promise<Array<ClientScopeRepresentation>>
|
|
123
|
+
|
|
124
|
+
## 6) Scope Mappings (Client + Realm)
|
|
125
|
+
|
|
126
|
+
### listScopeMappings(filter)
|
|
127
|
+
- **Required**: `filter.id` (client UUID)
|
|
128
|
+
- **Returns**: Promise<object>
|
|
129
|
+
|
|
130
|
+
### listAvailableClientScopeMappings(filter)
|
|
131
|
+
- **Required**: `filter.id` (client UUID)
|
|
132
|
+
- **Required**: `filter.clientUniqueId` (target client UUID)
|
|
133
|
+
- **Returns**: Promise<Array<RoleRepresentation>>
|
|
134
|
+
|
|
135
|
+
### addClientScopeMappings(filter, roles)
|
|
136
|
+
- **Required**: `filter.id` (client UUID)
|
|
137
|
+
- **Required**: `filter.clientUniqueId`
|
|
138
|
+
- **Required**: `roles` (Array<{id,name}>)
|
|
139
|
+
- **Returns**: Promise<void>
|
|
140
|
+
|
|
141
|
+
### listClientScopeMappings(filter)
|
|
142
|
+
- **Required**: `filter.id`
|
|
143
|
+
- **Required**: `filter.clientUniqueId`
|
|
144
|
+
- **Returns**: Promise<Array<RoleRepresentation>>
|
|
145
|
+
|
|
146
|
+
### listCompositeClientScopeMappings(filter)
|
|
147
|
+
- **Required**: `filter.id`
|
|
148
|
+
- **Required**: `filter.clientUniqueId`
|
|
149
|
+
- **Returns**: Promise<Array<RoleRepresentation>>
|
|
150
|
+
|
|
151
|
+
### delClientScopeMappings(filter, roles)
|
|
152
|
+
- **Required**: `filter.id`
|
|
153
|
+
- **Required**: `filter.clientUniqueId`
|
|
154
|
+
- **Required**: `roles`
|
|
155
|
+
- **Returns**: Promise<void>
|
|
156
|
+
|
|
157
|
+
### listAvailableRealmScopeMappings(filter)
|
|
158
|
+
- **Required**: `filter.id` (client UUID)
|
|
159
|
+
- **Returns**: Promise<Array<RoleRepresentation>>
|
|
160
|
+
|
|
161
|
+
### listRealmScopeMappings(filter)
|
|
162
|
+
- **Required**: `filter.id`
|
|
163
|
+
- **Returns**: Promise<Array<RoleRepresentation>>
|
|
164
|
+
|
|
165
|
+
### listCompositeRealmScopeMappings(filter)
|
|
166
|
+
- **Required**: `filter.id`
|
|
167
|
+
- **Returns**: Promise<Array<RoleRepresentation>>
|
|
168
|
+
|
|
169
|
+
### addRealmScopeMappings(filter, roles)
|
|
170
|
+
- **Required**: `filter.id`
|
|
171
|
+
- **Required**: `roles`
|
|
172
|
+
- **Returns**: Promise<void>
|
|
173
|
+
|
|
174
|
+
### delRealmScopeMappings(filter, roles)
|
|
175
|
+
- **Required**: `filter.id`
|
|
176
|
+
- **Required**: `roles`
|
|
177
|
+
- **Returns**: Promise<void>
|
|
178
|
+
|
|
179
|
+
## 7) Sessions and Cluster
|
|
180
|
+
|
|
181
|
+
### listSessions(filter)
|
|
182
|
+
- **Required**: `filter.id` (client UUID)
|
|
183
|
+
- **Optional**: `first`, `max`
|
|
184
|
+
- **Returns**: Promise<Array<object>>
|
|
185
|
+
|
|
186
|
+
### listOfflineSessions(filter)
|
|
187
|
+
- **Required**: `filter.id` (client UUID)
|
|
188
|
+
- **Optional**: `first`, `max`
|
|
189
|
+
- **Returns**: Promise<Array<object>>
|
|
190
|
+
|
|
191
|
+
### getSessionCount(filter)
|
|
192
|
+
- **Required**: `filter.id` (client UUID)
|
|
193
|
+
- **Returns**: Promise<number|object>
|
|
194
|
+
|
|
195
|
+
### getOfflineSessionCount(filter)
|
|
196
|
+
- **Required**: `filter.id` (client UUID)
|
|
197
|
+
- **Returns**: Promise<number|object>
|
|
198
|
+
|
|
199
|
+
### addClusterNode(filter)
|
|
200
|
+
- **Required**: `filter.id` (client UUID)
|
|
201
|
+
- **Required**: `filter.node` (string)
|
|
202
|
+
- **Returns**: Promise<void>
|
|
203
|
+
|
|
204
|
+
### deleteClusterNode(filter)
|
|
205
|
+
- **Required**: `filter.id` (client UUID)
|
|
206
|
+
- **Required**: `filter.node` (string)
|
|
207
|
+
- **Returns**: Promise<void>
|
|
208
|
+
|
|
209
|
+
## 8) Client Keys
|
|
210
|
+
|
|
211
|
+
### generateAndDownloadKey(filter, config)
|
|
212
|
+
- **Required**: `filter.id` (client UUID)
|
|
213
|
+
- **Required**: `config` (key generation/download options)
|
|
214
|
+
- **Returns**: Promise<object|binary>
|
|
215
|
+
|
|
216
|
+
### generateKey(filter)
|
|
217
|
+
- **Required**: `filter.id` (client UUID)
|
|
218
|
+
- **Optional**: key provider settings
|
|
219
|
+
- **Returns**: Promise<object>
|
|
220
|
+
|
|
221
|
+
### getKeyInfo(filter)
|
|
222
|
+
- **Required**: `filter.id` (client UUID)
|
|
223
|
+
- **Returns**: Promise<object>
|
|
224
|
+
|
|
225
|
+
### downloadKey(filter, config)
|
|
226
|
+
- **Required**: `filter.id` (client UUID)
|
|
227
|
+
- **Required**: `config` (format / keystore params)
|
|
228
|
+
- **Returns**: Promise<object|binary>
|
|
229
|
+
|
|
230
|
+
## 9) Authorization Services - Scope APIs
|
|
231
|
+
|
|
232
|
+
### createAuthorizationScope(filter, scopeRepresentation)
|
|
233
|
+
- **Required**: `filter.id` (client UUID with authz enabled)
|
|
234
|
+
- **Required**: `scopeRepresentation.name`
|
|
235
|
+
- **Optional**: `displayName`, `iconUri`
|
|
236
|
+
- **Returns**: Promise<object>
|
|
237
|
+
|
|
238
|
+
### listAllScopes(filter)
|
|
239
|
+
- **Required**: `filter.id`
|
|
240
|
+
- **Optional**: `name`, `first`, `max`, `deep`, `exactName`, `owner`, `scope`
|
|
241
|
+
- **Returns**: Promise<Array<object>>
|
|
242
|
+
|
|
243
|
+
### updateAuthorizationScope(filter, AuthorizationScopeRepresentation)
|
|
244
|
+
- **Required**: `filter.id`
|
|
245
|
+
- **Required**: `filter.scopeId`
|
|
246
|
+
- **Required**: representation object
|
|
247
|
+
- **Returns**: Promise<void>
|
|
248
|
+
|
|
249
|
+
### getAuthorizationScope(filter)
|
|
250
|
+
- **Required**: `filter.id`
|
|
251
|
+
- **Required**: `filter.scopeId`
|
|
252
|
+
- **Returns**: Promise<object>
|
|
253
|
+
|
|
254
|
+
### listAllResourcesByScope(filter)
|
|
255
|
+
- **Required**: `filter.id`
|
|
256
|
+
- **Required**: `filter.scopeId`
|
|
257
|
+
- **Returns**: Promise<Array<object>>
|
|
258
|
+
|
|
259
|
+
### listAllPermissionsByScope(filter)
|
|
260
|
+
- **Required**: `filter.id`
|
|
261
|
+
- **Required**: `filter.scopeId`
|
|
262
|
+
- **Returns**: Promise<Array<object>>
|
|
263
|
+
|
|
264
|
+
### listPermissionScope(filter)
|
|
265
|
+
- **Required**: `filter.id`
|
|
266
|
+
- **Required**: `filter.permissionId`
|
|
267
|
+
- **Returns**: Promise<Array<object>>
|
|
268
|
+
|
|
269
|
+
## 10) Authorization Services - Resources
|
|
270
|
+
|
|
271
|
+
### importResource(filter, resource)
|
|
272
|
+
- **Required**: `filter.id`
|
|
273
|
+
- **Required**: `resource` (resource server import JSON)
|
|
274
|
+
- **Returns**: Promise<object>
|
|
275
|
+
|
|
276
|
+
### exportResource(filter)
|
|
277
|
+
- **Required**: `filter.id`
|
|
278
|
+
- **Returns**: Promise<object>
|
|
279
|
+
|
|
280
|
+
### createResource(filter, resourceRepresentation)
|
|
281
|
+
- **Required**: `filter.id`
|
|
282
|
+
- **Required**: `resourceRepresentation.name`
|
|
283
|
+
- **Optional**: `uris`, `scopes`, `owner`, `type`, `attributes`
|
|
284
|
+
- **Returns**: Promise<object>
|
|
285
|
+
|
|
286
|
+
### getResource(filter)
|
|
287
|
+
- **Required**: `filter.id`
|
|
288
|
+
- **Required**: `filter.resourceId`
|
|
289
|
+
- **Returns**: Promise<object>
|
|
290
|
+
|
|
291
|
+
### listResources(filter)
|
|
292
|
+
- **Required**: `filter.id`
|
|
293
|
+
- **Optional**: `name`, `uri`, `owner`, `type`, `scope`, `first`, `max`, `deep`, `matchingUri`
|
|
294
|
+
- **Returns**: Promise<Array<object>>
|
|
295
|
+
|
|
296
|
+
### updateResource(filter, resourceRepresentation)
|
|
297
|
+
- **Required**: `filter.id`
|
|
298
|
+
- **Required**: `filter.resourceId`
|
|
299
|
+
- **Required**: updated resource representation
|
|
300
|
+
- **Returns**: Promise<void>
|
|
301
|
+
|
|
302
|
+
### listPermissionsByResource(filter)
|
|
303
|
+
- **Required**: `filter.id`
|
|
304
|
+
- **Required**: `filter.resourceId`
|
|
305
|
+
- **Returns**: Promise<Array<object>>
|
|
306
|
+
|
|
307
|
+
### listScopesByResource(filter)
|
|
308
|
+
- **Required**: `filter.id`
|
|
309
|
+
- **Required**: `filter.resourceId`
|
|
310
|
+
- **Returns**: Promise<Array<object>>
|
|
311
|
+
|
|
312
|
+
## 11) Authorization Services - Policies and Permissions
|
|
313
|
+
|
|
314
|
+
### createPermission(filter, permissionRepresentation)
|
|
315
|
+
- **Required**: `filter.id`
|
|
316
|
+
- **Required**: permission representation (`name`, `type`, ...)
|
|
317
|
+
- **Returns**: Promise<object>
|
|
318
|
+
|
|
319
|
+
### findPermissions(filter)
|
|
320
|
+
- **Required**: `filter.id`
|
|
321
|
+
- **Optional**: `name`, `scope`, `resource`, `type`, `first`, `max`, `owner`
|
|
322
|
+
- **Returns**: Promise<Array<object>>
|
|
323
|
+
|
|
324
|
+
### createPolicy(filter, policyRepresentation)
|
|
325
|
+
- **Required**: `filter.id`
|
|
326
|
+
- **Required**: policy representation (`name`, `type`, `logic`, `decisionStrategy`, ...)
|
|
327
|
+
- **Returns**: Promise<object>
|
|
328
|
+
|
|
329
|
+
### listDependentPolicies(filter)
|
|
330
|
+
- **Required**: `filter.id`
|
|
331
|
+
- **Required**: `filter.policyId`
|
|
332
|
+
- **Returns**: Promise<Array<object>>
|
|
333
|
+
|
|
334
|
+
### getAssociatedScopes(filter)
|
|
335
|
+
- **Required**: `filter.id`
|
|
336
|
+
- **Required**: `filter.permissionId`
|
|
337
|
+
- **Returns**: Promise<Array<object>>
|
|
338
|
+
|
|
339
|
+
### getAssociatedPolicies(filter)
|
|
340
|
+
- **Required**: `filter.id`
|
|
341
|
+
- **Required**: `filter.permissionId`
|
|
342
|
+
- **Returns**: Promise<Array<object>>
|
|
343
|
+
|
|
344
|
+
### getAssociatedResources(filter)
|
|
345
|
+
- **Required**: `filter.id`
|
|
346
|
+
- **Required**: `filter.permissionId`
|
|
347
|
+
- **Returns**: Promise<Array<object>>
|
|
348
|
+
|
|
349
|
+
### updateFineGrainPermission(filter, status)
|
|
350
|
+
- **Required**: `filter.id` (client UUID)
|
|
351
|
+
- **Required**: `status` (boolean)
|
|
352
|
+
- **Returns**: Promise<object>
|
|
353
|
+
|
|
354
|
+
### listFineGrainPermissions(filter)
|
|
355
|
+
- **Required**: `filter.id` (client UUID)
|
|
356
|
+
- **Returns**: Promise<object>
|
|
357
|
+
|
|
358
|
+
## 12) Resource Server Settings
|
|
359
|
+
|
|
360
|
+
### getResourceServer(filter)
|
|
361
|
+
- **Required**: `filter.id` (client UUID)
|
|
362
|
+
- **Returns**: Promise<object>
|
|
363
|
+
|
|
364
|
+
### updateResourceServer(filter, resourceServerRepresentation)
|
|
365
|
+
- **Required**: `filter.id`
|
|
366
|
+
- **Required**: `resourceServerRepresentation`
|
|
367
|
+
- **Returns**: Promise<void>
|
|
368
|
+
|
|
369
|
+
## 13) Token / Mapper Evaluation
|
|
370
|
+
|
|
371
|
+
### evaluateGenerateAccessToken(filter)
|
|
372
|
+
- **Required**: `filter.id` (client UUID)
|
|
373
|
+
- **Optional**: evaluation context filters
|
|
374
|
+
- **Returns**: Promise<object>
|
|
375
|
+
|
|
376
|
+
### evaluateGenerateIdToken(filter)
|
|
377
|
+
- **Required**: `filter.id`
|
|
378
|
+
- **Returns**: Promise<object>
|
|
379
|
+
|
|
380
|
+
### evaluateGenerateUserInfo(filter)
|
|
381
|
+
- **Required**: `filter.id`
|
|
382
|
+
- **Returns**: Promise<object>
|
|
383
|
+
|
|
384
|
+
### evaluateListProtocolMapper(filter)
|
|
385
|
+
- **Required**: `filter.id`
|
|
386
|
+
- **Returns**: Promise<Array<object>>
|
|
387
|
+
|
|
388
|
+
## 14) Protocol Mappers (Wrapper Enhancements)
|
|
389
|
+
|
|
390
|
+
This wrapper includes robust protocol mapper helpers used to cover gaps and edge-cases in upstream usage patterns.
|
|
391
|
+
|
|
392
|
+
### addProtocolMapper(filter, protocolMapperRepresentation)
|
|
393
|
+
- **Required**: `filter.id` (client UUID)
|
|
394
|
+
- **Required**: mapper representation (`name`, `protocol`, `protocolMapper`)
|
|
395
|
+
- **Returns**: Promise<object>
|
|
396
|
+
|
|
397
|
+
### updateProtocolMapper(filter, protocolMapperRepresentation)
|
|
398
|
+
- **Required**: `filter.id`
|
|
399
|
+
- **Required**: `filter.mapperId`
|
|
400
|
+
- **Required**: mapper representation
|
|
401
|
+
- **Returns**: Promise<void>
|
|
402
|
+
|
|
403
|
+
### addMultipleProtocolMappers(filter, protocolMapperRepresentation)
|
|
404
|
+
- **Required**: `filter.id`
|
|
405
|
+
- **Required**: mapper array payload
|
|
406
|
+
- **Returns**: Promise<void>
|
|
407
|
+
|
|
408
|
+
### findProtocolMapperByName(filter)
|
|
409
|
+
- **Required**: `filter.id`
|
|
410
|
+
- **Required**: `filter.name`
|
|
411
|
+
- **Returns**: Promise<object>
|
|
412
|
+
|
|
413
|
+
### findProtocolMappersByProtocol(filter)
|
|
414
|
+
- **Required**: `filter.id`
|
|
415
|
+
- **Required**: `filter.protocol`
|
|
416
|
+
- **Returns**: Promise<Array<object>>
|
|
417
|
+
|
|
418
|
+
### findProtocolMapperById(filter)
|
|
419
|
+
- **Required**: `filter.id`
|
|
420
|
+
- **Required**: `filter.mapperId`
|
|
421
|
+
- **Returns**: Promise<object>
|
|
422
|
+
|
|
423
|
+
### listProtocolMappers(filter)
|
|
424
|
+
- **Required**: `filter.id`
|
|
425
|
+
- **Returns**: Promise<Array<object>>
|
|
426
|
+
|
|
427
|
+
### delProtocolMapper(filter)
|
|
428
|
+
- **Required**: `filter.id`
|
|
429
|
+
- **Required**: `filter.mapperId`
|
|
430
|
+
- **Returns**: Promise<void>
|
|
431
|
+
|
|
432
|
+
## Example
|
|
433
|
+
|
|
434
|
+
```js
|
|
435
|
+
const client = await KeycloakManager.clients.create({
|
|
436
|
+
clientId: 'my-service',
|
|
437
|
+
enabled: true,
|
|
438
|
+
serviceAccountsEnabled: true,
|
|
439
|
+
authorizationServicesEnabled: true,
|
|
440
|
+
publicClient: false
|
|
441
|
+
});
|
|
442
|
+
|
|
443
|
+
const secret = await KeycloakManager.clients.getClientSecret({ id: client.id });
|
|
444
|
+
const serviceUser = await KeycloakManager.clients.getServiceAccountUser({ id: client.id });
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
## See Also
|
|
448
|
+
- [API Reference](../api-reference.md)
|
|
449
|
+
- [Client Scopes](client-scopes.md)
|
|
450
|
+
- [Users](users.md)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Components API
|
|
2
|
+
|
|
3
|
+
Manage Keycloak components (LDAP providers, Kerberos, user federation, storage mappers, and subcomponents).
|
|
4
|
+
|
|
5
|
+
**Namespace:** `KeycloakManager.components`
|
|
6
|
+
|
|
7
|
+
## Methods
|
|
8
|
+
|
|
9
|
+
### create(componentRepresentation)
|
|
10
|
+
- **Required**: `componentRepresentation.name`
|
|
11
|
+
- **Required**: `componentRepresentation.providerId`
|
|
12
|
+
- **Required**: `componentRepresentation.providerType`
|
|
13
|
+
- **Optional**: `parentId`, `config`, `subType`
|
|
14
|
+
- **Returns**: Promise<object>
|
|
15
|
+
|
|
16
|
+
### find(filter)
|
|
17
|
+
- **Optional**: `parent`, `type`, `name`
|
|
18
|
+
- **Returns**: Promise<Array<ComponentRepresentation>>
|
|
19
|
+
|
|
20
|
+
### findOne(filter)
|
|
21
|
+
- **Required**: `filter.id` (component id)
|
|
22
|
+
- **Returns**: Promise<ComponentRepresentation>
|
|
23
|
+
|
|
24
|
+
### update(filter, componentRepresentation)
|
|
25
|
+
- **Required**: `filter.id`
|
|
26
|
+
- **Required**: `componentRepresentation`
|
|
27
|
+
- **Returns**: Promise<void>
|
|
28
|
+
|
|
29
|
+
### del(filter)
|
|
30
|
+
- **Required**: `filter.id`
|
|
31
|
+
- **Returns**: Promise<void>
|
|
32
|
+
|
|
33
|
+
### listSubComponents(filter)
|
|
34
|
+
- **Required**: `filter.id` (parent component id)
|
|
35
|
+
- **Required**: `filter.type` (provider type)
|
|
36
|
+
- **Optional**: `filter.first`, `filter.max`
|
|
37
|
+
- **Returns**: Promise<Array<ComponentRepresentation>>
|
|
38
|
+
|
|
39
|
+
## Example
|
|
40
|
+
|
|
41
|
+
```js
|
|
42
|
+
const ldapComponent = await KeycloakManager.components.create({
|
|
43
|
+
name: 'corporate-ldap',
|
|
44
|
+
providerId: 'ldap',
|
|
45
|
+
providerType: 'org.keycloak.storage.UserStorageProvider',
|
|
46
|
+
parentId: 'my-realm',
|
|
47
|
+
config: {
|
|
48
|
+
connectionUrl: ['ldap://ldap.company.local:389'],
|
|
49
|
+
usersDn: ['ou=users,dc=company,dc=local'],
|
|
50
|
+
bindDn: ['cn=admin,dc=company,dc=local']
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## See Also
|
|
56
|
+
- [API Reference](../api-reference.md)
|
|
57
|
+
- [Realms](realms.md)
|