You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(okta): stop partial updates erasing stored profile data (#6751)
* fix(okta): stop partial updates erasing stored profile data
Post-merge audit of the Okta integration (follows #6741), verified against the
OpenAPI spec bundled in okta-sdk-golang/.generator.
Two updates could silently destroy data:
- `update_group` targets `PUT /api/v1/groups/{groupId}`, which Okta documents as
`replaceGroup` — it swaps the profile wholesale. Sending only the two fields
the tool exposes erased the stored description on every rename, and dropped
every org-defined custom attribute along with it. The tool now reads the group
and overlays the supplied fields before replacing, matching the read-modify-
write `salesforce_update_custom_field` already uses for the same hazard.
- `update_user` gated its profile fields on `!== undefined`, so an empty string
reached Okta and blanked the stored value. The block strips blanks before they
get there, but the tool is `user-or-llm` and a model routinely emits `""` for a
field it has nothing to say about, so the guard belongs on the tool.
Also corrected:
- `forgetDevices` defaults to true at Okta, so the unseeded switch rendered off
while remembered factors were in fact being cleared.
- Group rules take a plain keyword on `search`, not the SCIM-style expression the
shared Search field's wand generates, so they get their own field.
- `get_logs` dropped `limit=0`, which the spec documents as valid.
- `get_user` emitted an activation timestamp under `activated`, which the block
declares as the lifecycle boolean; the timestamp is now `activatedAt`.
- Descriptions that overstated what an endpoint does: `list_users` omits
DEPROVISIONED users, `delete_user` deactivates before it deletes,
`delete_group_rule` answers 202, and `excludedGroupIds` is always empty because
Okta does not support group exclusions.
* fix(okta): forward the abort signal through the group read-modify-write
* test(okta): rename the shared body-builder helper
* fix(okta): key the send-email and search mappings off the operation
* docs(okta): use TSDoc for the new block annotations
Copy file name to clipboardExpand all lines: apps/docs/content/docs/en/integrations/okta.mdx
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,7 +40,7 @@ Integrate Okta identity management into your workflow. Manage users, groups, and
40
40
41
41
### List Users from Okta
42
42
43
-
List all users in your Okta organization with optional search and filtering
43
+
List users in your Okta organization with optional search and filtering. Users with a DEPROVISIONED status are omitted unless a search or filter expression selects them.
44
44
45
45
#### Input
46
46
@@ -308,7 +308,7 @@ Permanently delete a user from your Okta organization. Can only be performed on
308
308
| Parameter | Type | Description |
309
309
| --------- | ---- | ----------- |
310
310
|`userId`| string | Deleted user ID |
311
-
|`deleted`| boolean | Whether the user was deleted |
311
+
|`deleted`| boolean | Whether the delete request was accepted. An ACTIVE user is deactivated by the first call and needs a second call to actually be deleted.|
312
312
|`success`| boolean | Operation success status |
313
313
314
314
### List Groups from Okta
@@ -396,7 +396,7 @@ Create a new group in your Okta organization
396
396
397
397
### Update Group in Okta
398
398
399
-
Update a group profile in your Okta organization. Only groups of OKTA_GROUP type can be updated. All profile properties must be specified (full replacement).
399
+
Update a group profile in your Okta organization. Only groups of OKTA_GROUP type can be updated. Fields left blank keep their stored value.
400
400
401
401
#### Input
402
402
@@ -552,7 +552,7 @@ List the group rules in your Okta organization. Each rule assigns users to group
552
552
| ↳ `expressionType`| string | Expression language, typically urn:okta:expression:1.0 |
553
553
| ↳ `assignUserToGroupIds`| array | Groups that matching users are assigned to |
554
554
| ↳ `excludedUserIds`| array | Users excluded from the rule |
555
-
| ↳ `excludedGroupIds`| array | Groups excluded from the rule |
555
+
| ↳ `excludedGroupIds`| array | Groups excluded from the rule. Always empty — Okta does not currently support group exclusions.|
556
556
|`count`| number | Number of rules returned |
557
557
|`nextCursor`| string | Cursor for the next page, or null on the last page |
558
558
|`hasMore`| boolean | Whether more rules are available |
@@ -584,7 +584,7 @@ Retrieve a single Okta group rule by ID, including the expression that decides w
584
584
|`expressionType`| string | Expression language, typically urn:okta:expression:1.0 |
585
585
|`assignUserToGroupIds`| array | Groups that matching users are assigned to |
586
586
|`excludedUserIds`| array | Users excluded from the rule |
587
-
|`excludedGroupIds`| array | Groups excluded from the rule |
587
+
|`excludedGroupIds`| array | Groups excluded from the rule. Always empty — Okta does not currently support group exclusions.|
588
588
|`success`| boolean | Operation success status |
589
589
590
590
### Create Group Rule in Okta
@@ -616,7 +616,7 @@ Create a group rule that automatically assigns users matching an Okta expression
616
616
|`expressionType`| string | Expression language, typically urn:okta:expression:1.0 |
617
617
|`assignUserToGroupIds`| array | Groups that matching users are assigned to |
618
618
|`excludedUserIds`| array | Users excluded from the rule |
619
-
|`excludedGroupIds`| array | Groups excluded from the rule |
619
+
|`excludedGroupIds`| array | Groups excluded from the rule. Always empty — Okta does not currently support group exclusions.|
620
620
|`success`| boolean | Operation success status |
621
621
622
622
### Activate Group Rule in Okta
@@ -677,7 +677,7 @@ Permanently delete a group rule. Destructive and irreversible. Optionally also r
677
677
| Parameter | Type | Description |
678
678
| --------- | ---- | ----------- |
679
679
|`groupRuleId`| string | Deleted group rule ID |
680
-
|`deleted`| boolean | Whether the rule was deleted|
680
+
|`deleted`| boolean | Whether the deletion was accepted. Okta answers 202 and removes the rule asynchronously.|
Copy file name to clipboardExpand all lines: apps/sim/lib/integrations/integrations.json
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
{
2
-
"updatedAt": "2026-08-15",
2
+
"updatedAt": "2026-08-16",
3
3
"integrations": [
4
4
{
5
5
"type": "onepassword",
@@ -13731,7 +13731,7 @@
13731
13731
"operations": [
13732
13732
{
13733
13733
"name": "List Users",
13734
-
"description": "List all users in your Okta organization with optional search and filtering"
13734
+
"description": "List users in your Okta organization with optional search and filtering. Users with a DEPROVISIONED status are omitted unless a search or filter expression selects them."
13735
13735
},
13736
13736
{
13737
13737
"name": "Get User",
@@ -13783,7 +13783,7 @@
13783
13783
},
13784
13784
{
13785
13785
"name": "Update Group",
13786
-
"description": "Update a group profile in your Okta organization. Only groups of OKTA_GROUP type can be updated. All profile properties must be specified (full replacement)."
13786
+
"description": "Update a group profile in your Okta organization. Only groups of OKTA_GROUP type can be updated. Fields left blank keep their stored value."
0 commit comments