keycloak-api-manager 6.0.1 → 6.0.3

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.
@@ -2,7 +2,17 @@
2
2
 
3
3
  Manage client scopes, protocol mappers, and role scope mappings.
4
4
 
5
- **Namespace:** `KeycloakManager.clientScopes`
5
+ Namespace: KeycloakManager.clientScopes
6
+
7
+ ## Overview
8
+
9
+ Client scopes are reusable bundles of:
10
+
11
+ - Protocol mappers (claims in tokens/userinfo).
12
+ - Realm role mappings.
13
+ - Client role mappings.
14
+
15
+ This handler covers full CRUD for scopes and all mapper/mapping operations.
6
16
 
7
17
  ## Scope CRUD
8
18
 
@@ -12,28 +22,33 @@ Manage client scopes, protocol mappers, and role scope mappings.
12
22
  - **Returns**: Promise<object>
13
23
 
14
24
  ### find(filter)
15
- - **Optional**: `search`, `first`, `max`
25
+ - **Optional**: `search`, `first`, `max`, `realm`
16
26
  - **Returns**: Promise<Array<ClientScopeRepresentation>>
17
27
 
18
28
  ### findOne(filter)
19
29
  - **Required**: `filter.id` (scope id)
30
+ - **Optional**: `filter.realm`
20
31
  - **Returns**: Promise<ClientScopeRepresentation>
21
32
 
22
33
  ### findOneByName(filter)
23
34
  - **Required**: `filter.name` (scope name)
35
+ - **Optional**: `filter.realm`
24
36
  - **Returns**: Promise<ClientScopeRepresentation|null>
25
37
 
26
38
  ### update(filter, scopeRepresentation)
27
39
  - **Required**: `filter.id` (scope id)
40
+ - **Optional**: `filter.realm`
28
41
  - **Required**: `scopeRepresentation` (partial)
29
42
  - **Returns**: Promise<void>
30
43
 
31
44
  ### del(filter)
32
45
  - **Required**: `filter.id` (scope id)
46
+ - **Optional**: `filter.realm`
33
47
  - **Returns**: Promise<void>
34
48
 
35
49
  ### delByName(filter)
36
50
  - **Required**: `filter.name` (scope name)
51
+ - **Optional**: `filter.realm`
37
52
  - **Returns**: Promise<void>
38
53
 
39
54
  ## Realm Default Scopes
@@ -44,10 +59,12 @@ Manage client scopes, protocol mappers, and role scope mappings.
44
59
 
45
60
  ### addDefaultClientScope(filter)
46
61
  - **Required**: `filter.id` (scope id)
62
+ - **Optional**: `filter.realm`
47
63
  - **Returns**: Promise<void>
48
64
 
49
65
  ### delDefaultClientScope(filter)
50
66
  - **Required**: `filter.id` (scope id)
67
+ - **Optional**: `filter.realm`
51
68
  - **Returns**: Promise<void>
52
69
 
53
70
  ### listDefaultOptionalClientScopes(filter)
@@ -56,35 +73,42 @@ Manage client scopes, protocol mappers, and role scope mappings.
56
73
 
57
74
  ### addDefaultOptionalClientScope(filter)
58
75
  - **Required**: `filter.id` (scope id)
76
+ - **Optional**: `filter.realm`
59
77
  - **Returns**: Promise<void>
60
78
 
61
79
  ### delDefaultOptionalClientScope(filter)
62
80
  - **Required**: `filter.id` (scope id)
81
+ - **Optional**: `filter.realm`
63
82
  - **Returns**: Promise<void>
64
83
 
65
84
  ## Protocol Mappers
66
85
 
67
86
  ### listProtocolMappers(filter)
68
87
  - **Required**: `filter.id` (scope id)
88
+ - **Optional**: `filter.realm`
69
89
  - **Returns**: Promise<Array<ProtocolMapperRepresentation>>
70
90
 
71
91
  ### findProtocolMapper(filter)
72
92
  - **Required**: `filter.id` (scope id)
73
93
  - **Required**: `filter.mapperId` (mapper id)
94
+ - **Optional**: `filter.realm`
74
95
  - **Returns**: Promise<ProtocolMapperRepresentation>
75
96
 
76
97
  ### findProtocolMapperByName(filter)
77
98
  - **Required**: `filter.id` (scope id)
78
99
  - **Required**: `filter.name` (mapper name)
100
+ - **Optional**: `filter.realm`
79
101
  - **Returns**: Promise<ProtocolMapperRepresentation>
80
102
 
81
103
  ### findProtocolMappersByProtocol(filter)
82
104
  - **Required**: `filter.id` (scope id)
83
105
  - **Required**: `filter.protocol` (`openid-connect` or `saml`)
106
+ - **Optional**: `filter.realm`
84
107
  - **Returns**: Promise<Array<ProtocolMapperRepresentation>>
85
108
 
86
109
  ### addProtocolMapper(filter, protocolMapper)
87
110
  - **Required**: `filter.id` (scope id)
111
+ - **Optional**: `filter.realm`
88
112
  - **Required**: `protocolMapper.name`
89
113
  - **Required**: `protocolMapper.protocol`
90
114
  - **Required**: `protocolMapper.protocolMapper`
@@ -93,75 +117,89 @@ Manage client scopes, protocol mappers, and role scope mappings.
93
117
 
94
118
  ### addMultipleProtocolMappers(filter, protocolMappers)
95
119
  - **Required**: `filter.id` (scope id)
120
+ - **Optional**: `filter.realm`
96
121
  - **Required**: `protocolMappers` (Array<ProtocolMapperRepresentation>)
97
122
  - **Returns**: Promise<void>
98
123
 
99
124
  ### updateProtocolMapper(filter, protocolMapper)
100
125
  - **Required**: `filter.id` (scope id)
101
126
  - **Required**: `filter.mapperId` (mapper id)
127
+ - **Optional**: `filter.realm`
102
128
  - **Required**: `protocolMapper` (updated representation)
103
129
  - **Returns**: Promise<void>
104
130
 
105
131
  ### delProtocolMapper(filter)
106
132
  - **Required**: `filter.id` (scope id)
107
133
  - **Required**: `filter.mapperId` (mapper id)
134
+ - **Optional**: `filter.realm`
108
135
  - **Returns**: Promise<void>
109
136
 
110
137
  ## Client Scope Role Mappings (for one client scope)
111
138
 
112
139
  ### listScopeMappings(filter)
113
140
  - **Required**: `filter.id` (scope id)
141
+ - **Optional**: `filter.realm`
114
142
  - **Returns**: Promise<object>
115
143
 
116
144
  ### listAvailableClientScopeMappings(filter)
117
145
  - **Required**: `filter.id` (scope id)
118
146
  - **Required**: `filter.clientUniqueId` (client UUID)
147
+ - **Optional**: `filter.realm`
119
148
  - **Returns**: Promise<Array<RoleRepresentation>>
120
149
 
121
150
  ### addClientScopeMappings(filter, roleRepresentation)
122
151
  - **Required**: `filter.id` (scope id)
123
152
  - **Required**: `filter.clientUniqueId` (client UUID)
153
+ - **Optional**: `filter.realm`
124
154
  - **Required**: `roleRepresentation` (Array<{id,name}> or role-like object depending on endpoint)
125
155
  - **Returns**: Promise<void>
126
156
 
127
157
  ### delClientScopeMappings(filter, roleRepresentation)
128
158
  - **Required**: `filter.id` (scope id)
129
159
  - **Required**: `filter.clientUniqueId` (client UUID)
160
+ - **Optional**: `filter.realm`
130
161
  - **Required**: `roleRepresentation`
131
162
  - **Returns**: Promise<void>
132
163
 
133
164
  ### listClientScopeMappings(filter)
134
165
  - **Required**: `filter.id` (scope id)
135
166
  - **Required**: `filter.clientUniqueId` (client UUID)
167
+ - **Optional**: `filter.realm`
136
168
  - **Returns**: Promise<Array<RoleRepresentation>>
137
169
 
138
170
  ### listCompositeClientScopeMappings(filter)
139
171
  - **Required**: `filter.id` (scope id)
140
172
  - **Required**: `filter.clientUniqueId` (client UUID)
173
+ - **Optional**: `filter.realm`
141
174
  - **Returns**: Promise<Array<RoleRepresentation>>
142
175
 
143
176
  ## Realm Scope Mappings (for one client scope)
144
177
 
145
178
  ### listAvailableRealmScopeMappings(filter)
146
179
  - **Required**: `filter.id` (scope id)
180
+ - **Optional**: `filter.realm`
147
181
  - **Returns**: Promise<Array<RoleRepresentation>>
148
182
 
149
183
  ### addRealmScopeMappings(filter, roleRepresentation)
150
184
  - **Required**: `filter.id` (scope id)
185
+ - **Optional**: `filter.realm`
151
186
  - **Required**: `roleRepresentation`
152
187
  - **Returns**: Promise<void>
153
188
 
154
- ### delRealmScopeMappings(filter, RoleRepresentation)
189
+ ### delRealmScopeMappings(filter, roleRepresentation)
155
190
  - **Required**: `filter.id` (scope id)
156
- - **Required**: `RoleRepresentation`
191
+ - **Optional**: `filter.realm`
192
+ - **Required**: `roleRepresentation`
157
193
  - **Returns**: Promise<void>
158
194
 
159
195
  ### listRealmScopeMappings(filter)
160
196
  - **Required**: `filter.id` (scope id)
197
+ - **Optional**: `filter.realm`
161
198
  - **Returns**: Promise<Array<RoleRepresentation>>
162
199
 
163
200
  ### listCompositeRealmScopeMappings(filter)
164
201
  - **Required**: `filter.id` (scope id)
202
+ - **Optional**: `filter.realm`
165
203
  - **Returns**: Promise<Array<RoleRepresentation>>
166
204
 
167
205
  ## Example
@@ -187,6 +225,16 @@ await KeycloakManager.clientScopes.addProtocolMapper(
187
225
  }
188
226
  }
189
227
  );
228
+
229
+ await KeycloakManager.clientScopes.addRealmScopeMappings(
230
+ { id: scope.id },
231
+ [{ id: realmRole.id, name: realmRole.name }]
232
+ );
233
+
234
+ await KeycloakManager.clientScopes.addClientScopeMappings(
235
+ { id: scope.id, clientUniqueId: client.id },
236
+ [{ id: clientRole.id, name: clientRole.name }]
237
+ );
190
238
  ```
191
239
 
192
240
  ## See Also
@@ -2,39 +2,108 @@
2
2
 
3
3
  Manage Keycloak components (LDAP providers, Kerberos, user federation, storage mappers, and subcomponents).
4
4
 
5
- **Namespace:** `KeycloakManager.components`
5
+ Namespace: KeycloakManager.components
6
+
7
+ ## Overview
8
+
9
+ Components represent pluggable server-side modules in Keycloak (for example user federation providers and their mappers).
10
+ This handler supports full CRUD plus sub-component listing.
6
11
 
7
12
  ## Methods
8
13
 
9
14
  ### 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
+ Create a component.
17
+
18
+ Parameters:
19
+
20
+ - componentRepresentation (object, required): component payload.
21
+
22
+ Common fields:
23
+
24
+ - name (string, required): component name.
25
+ - providerId (string, required): provider implementation id (for example ldap).
26
+ - providerType (string, required): provider class/type.
27
+ - parentId (string, optional): usually realm id or parent component id.
28
+ - config (object, optional): provider config map (Keycloak convention often uses arrays of strings).
29
+ - subType (string, optional): subtype where applicable.
30
+
31
+ Returns:
32
+
33
+ - Promise<object>: creation response (usually includes id).
15
34
 
16
35
  ### find(filter)
17
- - **Optional**: `parent`, `type`, `name`
18
- - **Returns**: Promise<Array<ComponentRepresentation>>
36
+
37
+ List components.
38
+
39
+ Parameters:
40
+
41
+ - filter (object, optional):
42
+ - parent (string, optional): parent id.
43
+ - type (string, optional): provider type filter.
44
+ - name (string, optional): name filter.
45
+ - first (number, optional): pagination offset.
46
+ - max (number, optional): pagination limit.
47
+
48
+ Returns:
49
+
50
+ - Promise<Array<ComponentRepresentation>>
19
51
 
20
52
  ### findOne(filter)
21
- - **Required**: `filter.id` (component id)
22
- - **Returns**: Promise<ComponentRepresentation>
53
+
54
+ Get a single component by id.
55
+
56
+ Parameters:
57
+
58
+ - filter (object, required):
59
+ - id (string, required): component id.
60
+
61
+ Returns:
62
+
63
+ - Promise<ComponentRepresentation>
23
64
 
24
65
  ### update(filter, componentRepresentation)
25
- - **Required**: `filter.id`
26
- - **Required**: `componentRepresentation`
27
- - **Returns**: Promise<void>
66
+
67
+ Update an existing component.
68
+
69
+ Parameters:
70
+
71
+ - filter (object, required):
72
+ - id (string, required): component id.
73
+ - componentRepresentation (object, required): updated payload.
74
+
75
+ Returns:
76
+
77
+ - Promise<void>
28
78
 
29
79
  ### del(filter)
30
- - **Required**: `filter.id`
31
- - **Returns**: Promise<void>
80
+
81
+ Delete a component by id.
82
+
83
+ Parameters:
84
+
85
+ - filter (object, required):
86
+ - id (string, required): component id.
87
+
88
+ Returns:
89
+
90
+ - Promise<void>
32
91
 
33
92
  ### 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>>
93
+
94
+ List sub-components for a parent component.
95
+
96
+ Parameters:
97
+
98
+ - filter (object, required):
99
+ - id (string, required): parent component id.
100
+ - type (string, required): sub-component provider type.
101
+ - first (number, optional): pagination offset.
102
+ - max (number, optional): pagination limit.
103
+
104
+ Returns:
105
+
106
+ - Promise<Array<ComponentRepresentation>>
38
107
 
39
108
  ## Example
40
109
 
@@ -50,6 +119,25 @@ const ldapComponent = await KeycloakManager.components.create({
50
119
  bindDn: ['cn=admin,dc=company,dc=local']
51
120
  }
52
121
  });
122
+
123
+ const allLdapProviders = await KeycloakManager.components.find({
124
+ type: 'org.keycloak.storage.UserStorageProvider',
125
+ });
126
+
127
+ const firstProvider = allLdapProviders[0];
128
+
129
+ if (firstProvider) {
130
+ await KeycloakManager.components.update(
131
+ { id: firstProvider.id },
132
+ {
133
+ ...firstProvider,
134
+ config: {
135
+ ...(firstProvider.config || {}),
136
+ editMode: ['READ_ONLY'],
137
+ },
138
+ }
139
+ );
140
+ }
53
141
  ```
54
142
 
55
143
  ## See Also