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.
@@ -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)