Okta Management
Yellow.ai's integration with Okta Management allows you to connect your Okta account directly to your agent, enabling it to perform real-time identity and access management operations — from creating and managing users and groups to handling MFA factors, app assignments, and audit logs — without leaving the conversation.
Common use cases include an IT helpdesk agent (unlock accounts, reset passwords, expire credentials), an onboarding/offboarding agent (create users, assign apps, deactivate accounts), and an access management agent (add users to groups, manage MFA factors, view audit logs).
Supported Actions
| Action | Description |
|---|---|
| Create User | Creates a new user in Okta. |
| Get User | Fetches a user's profile by ID or login. |
| Update User | Updates profile fields for an existing user. |
| Delete User | Deactivates and deletes a user from Okta. |
| Activate User | Activates a staged or deactivated user. |
| Deactivate User | Deactivates an active user. |
| Suspend User | Suspends an active user. |
| Unsuspend User | Restores a suspended user to active status. |
| Unlock User | Unlocks a user who has been locked out. |
| Reset Password | Triggers a password reset for a user. |
| Expire Password | Expires a user's current password, forcing a change on next login. |
| Change Password | Changes a user's password using their old and new passwords. |
| Create Group | Creates a new group in Okta. |
| Get Group | Fetches a group's details by ID. |
| Update Group | Updates the name or description of an existing group. |
| Delete Group | Deletes a group from Okta. |
| List Groups | Lists all groups, with optional search and limit. |
| Add User to Group | Assigns a user to a group. |
| Remove User from Group | Removes a user from a group. |
| Get Application | Fetches details of an Okta application by ID. |
| Assign App to User | Assigns an application to a user. |
| Unassign App from User | Removes an application assignment from a user. |
| List Factors | Lists all MFA factors enrolled for a user. |
| Enroll Factor | Enrolls a new MFA factor for a user. |
| Reset Factor | Deletes an enrolled MFA factor so a user can re-enroll. |
| Get Audit Logs | Retrieves system log events with optional filters and date range. |
| Get Pending Approvals | Lists users in a group (useful for approval queue flows). |
Integrating Okta Management with Yellow.ai
In a two-tier environment, you can connect an integration app in the Development environment. In a three-tier environment, you can connect the integration app either in Staging or Sandbox. All connected integrations are available in the live environment.
To integrate Yellow.ai with Okta Management, follow the steps below:
-
Switch to the Development/Staging environment and go to Extensions > Integrations > Tools > Okta Management. Alternatively, use the Search box to quickly find the required integration.
-
In Give account name, enter a unique name for the integration. You can use only lowercase alphanumeric characters and underscores (_).
-
Enter your Domain URL. This is your Okta org URL, for example:
https://dev-12345.okta.com. -
Enter your API Token. To generate one, log in to the Okta Admin Console, go to Security > API > Tokens, click Create Token, and copy the token value here.
noteThe API token must have admin privileges to manage users and groups.
-
Click Connect.
-
To connect another account, click +Add Account and repeat the steps above. You can add a maximum of 15 accounts.
Accessing Okta Management Functions via Agent Flow
Once integrated, you can drop Okta Management action nodes anywhere in your agent flows.
- Go to Automation and create or open a flow that suits your use case.
- Navigate to the point in the conversation where you want to add the node. Click Add Node, then go to Integrations and select Okta Management.
When multiple accounts are connected, select the appropriate account for each node. This lets you route different actions through different Okta accounts within the same agent.
Action Nodes
Create User
Creates a new user record in Okta. You can optionally activate the user immediately upon creation.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| First Name | String | User's first name. |
| Last Name | String | User's last name. |
| String | User's primary email address. | |
| Login (Email) | String | The login identifier — typically the same as the email. |
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Mobile Phone | String | User's mobile phone number. |
| Secondary Email | String | An alternate email address. |
| Activate User | Boolean | Set to true to activate the user immediately upon creation. Defaults to false. |
Sample response:
{
"id": "00ub0oNGTSWTBKOLGLNR",
"status": "STAGED",
"created": "2024-01-15T10:30:00.000Z",
"activated": null,
"lastLogin": null,
"lastUpdated": "2024-01-15T10:30:00.000Z",
"passwordChanged": null,
"profile": {
"firstName": "Jordan",
"lastName": "Lee",
"mobilePhone": "+1-555-123-4567",
"secondEmail": null
},
"credentials": {
"provider": {
"type": "OKTA",
"name": "OKTA"
}
}
}
Get User
Fetches the full profile of a user by their Okta User ID or login (email).
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Search By | String | Choose to look up the user by User ID or Login (Email). |
| Search Value | String | The actual ID or login value to search for. |
Sample response:
{
"id": "00ub0oNGTSWTBKOLGLNR",
"status": "ACTIVE",
"created": "2024-01-15T10:30:00.000Z",
"activated": "2024-01-15T10:35:00.000Z",
"lastLogin": "2024-05-20T08:12:00.000Z",
"lastUpdated": "2024-05-20T08:12:00.000Z",
"passwordChanged": "2024-02-01T09:00:00.000Z",
"profile": {
"firstName": "Jordan",
"lastName": "Lee",
"mobilePhone": "+1-555-123-4567",
"secondEmail": null
},
"credentials": {
"password": {},
"provider": {
"type": "OKTA",
"name": "OKTA"
}
}
}
Update User
Updates one or more profile fields for an existing user. Only the fields you pass will be changed — all others remain untouched.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID or Login | String | The Okta User ID or login of the user to update. |
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| First Name | String | Updated first name. |
| Last Name | String | Updated last name. |
| String | Updated email address. | |
| Mobile Phone | String | Updated mobile phone number. |
| Secondary Email | String | Updated secondary email address. |
Sample response:
{
"id": "00ub0oNGTSWTBKOLGLNR",
"status": "ACTIVE",
"created": "2024-01-15T10:30:00.000Z",
"lastUpdated": "2024-05-29T11:00:00.000Z",
"profile": {
"firstName": "Jordan",
"lastName": "Lee-Smith",
"mobilePhone": "+1-555-999-8888",
}
}
Delete User
Deactivates and permanently removes a user from Okta. Optionally sends a notification email to the user upon deletion.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID or Login | String | The Okta User ID or login of the user to delete. |
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Send Email | Boolean | Set to true to send the user a notification email upon deletion. |
Sample response:
{
"status": 204,
"message": "User successfully deactivated and deleted."
}
A successful delete returns HTTP 204 No Content. The response body is empty on success. The sample above is a Yellow.ai wrapper response for display in the agent flow.
This action is irreversible — ensure your flow includes a confirmation step before executing.
Activate User
Activates a user who is in STAGED or DEPROVISIONED status. Optionally sends an activation email with a link to set up their account.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The Okta User ID of the user to activate. |
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Send Email | Boolean | Set to true to send the activation email to the user. |
Sample response:
{
"activationUrl": "https://dev-12345.okta.com/welcome/XE6wE17zmphl3KqAPFxO",
"activationToken": "XE6wE17zmphl3KqAPFxO"
}
activationUrl is only returned when Send Email is false. When Send Email is true, Okta sends the link directly to the user and the response body is empty.
Deactivate User
Deactivates an active user, transitioning their status to DEPROVISIONED. The user loses all access to Okta apps and services.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The Okta User ID of the user to deactivate. |
Sample response:
{
"status": 200,
"message": "User successfully deactivated.",
"userId": "00ub0oNGTSWTBKOLGLNR",
"userStatus": "DEPROVISIONED"
}
Suspend User
Suspends an active user. A suspended user cannot sign in but their account and data are preserved. Useful for temporary offboarding or security holds.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The Okta User ID of the user to suspend. |
Sample response:
{
"status": 200,
"message": "User successfully suspended.",
"userId": "00ub0oNGTSWTBKOLGLNR",
"userStatus": "SUSPENDED"
}
Unsuspend User
Restores a suspended user back to ACTIVE status, re-enabling their login access.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The Okta User ID of the user to unsuspend. |
Sample response:
{
"status": 200,
"message": "User successfully unsuspended.",
"userId": "00ub0oNGTSWTBKOLGLNR",
"userStatus": "ACTIVE"
}
Unlock User
Unlocks a user account that has been locked out due to too many failed sign-in attempts, restoring their ability to log in.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The Okta User ID of the user to unlock. |
Sample response:
{
"status": 200,
"message": "User successfully unlocked.",
"userId": "00ub0oNGTSWTBKOLGLNR",
"userStatus": "ACTIVE"
}
Reset Password
Triggers a password reset for a user. If Send Email is enabled, the user receives a reset link via email. Otherwise, the reset URL is returned in the response for admin use.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The Okta User ID of the user whose password should be reset. |
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Send Email | Boolean | Set to true to send the password reset email to the user. Set to false to return the reset URL in the response instead. |
Sample response:
{
"resetPasswordUrl": "https://dev-12345.okta.com/reset_password/XE6wE17zmphl3KqAPFxO"
}
resetPasswordUrl is only returned when Send Email is false. When Send Email is true, Okta delivers the link directly to the user and the response body is empty.
Expire Password
Expires a user's current password immediately. On their next login, the user will be forced to set a new password. Returns a temporary password that can be shared with the user if needed.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The Okta User ID of the user whose password should be expired. |
Sample response:
{
"tempPassword": {
"value": "TmpP@ssw0rd123"
}
}
Change Password
Changes a user's password by verifying their current password and setting a new one. Both the old and new passwords must be provided.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The Okta User ID of the user. |
| Old Password | Object | An object with a value field containing the user's current password. |
| New Password | Object | An object with a value field containing the desired new password. |
Sample response:
{
"credentials": {
"password": {},
"provider": {
"type": "OKTA",
"name": "OKTA"
}
}
}
A successful change returns the updated credentials object. The password field is always returned as an empty object {} — Okta never exposes actual password values in responses.
Create Group
Creates a new Okta group with a name and optional description. Groups are used to manage app assignments, policies, and access control at scale.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Group Name | String | The display name for the new group. |
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Description | String | A short description of the group's purpose. |
Sample response:
{
"id": "00g1emaKYZTWRYYRRTSK",
"created": "2024-01-15T10:30:00.000Z",
"lastUpdated": "2024-01-15T10:30:00.000Z",
"lastMembershipUpdated": "2024-01-15T10:30:00.000Z",
"type": "OKTA_GROUP",
"profile": {
"name": "Engineering Team",
"description": "All engineering department employees"
},
"objectClass": ["okta:user_group"]
}
Get Group
Fetches the details of an Okta group using its Group ID.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Group ID | String | The unique ID of the group to retrieve. |
Sample response:
{
"id": "00g1emaKYZTWRYYRRTSK",
"created": "2024-01-15T10:30:00.000Z",
"lastUpdated": "2024-05-20T08:00:00.000Z",
"lastMembershipUpdated": "2024-05-18T14:22:00.000Z",
"type": "OKTA_GROUP",
"profile": {
"name": "Engineering Team",
"description": "All engineering department employees"
},
"objectClass": ["okta:user_group"]
}
Update Group
Updates the name and/or description of an existing Okta group.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Group ID | String | The unique ID of the group to update. |
| Group Name | String | The new name for the group. |
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Description | String | Updated description for the group. |
Sample response:
{
"id": "00g1emaKYZTWRYYRRTSK",
"created": "2024-01-15T10:30:00.000Z",
"lastUpdated": "2024-05-29T11:45:00.000Z",
"lastMembershipUpdated": "2024-05-18T14:22:00.000Z",
"type": "OKTA_GROUP",
"profile": {
"name": "Engineering Team - Backend",
"description": "Backend engineering team members"
}
}
Delete Group
Permanently deletes an Okta group. This does not delete the users who were members of the group.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Group ID | String | The unique ID of the group to delete. |
Sample response:
{
"status": 204,
"message": "Group successfully deleted."
}
A successful delete returns HTTP 204 No Content. The response body is empty on success. The sample above is a Yellow.ai wrapper response.
This action is irreversible — ensure your flow includes a confirmation step before executing.
List Groups
Returns a list of all groups in your Okta org. Supports an optional search query and result limit.
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Search Query | String | A search string to filter groups by name. |
| Limit | Number | Maximum number of groups to return. |
Sample response:
[
{
"id": "00g1emaKYZTWRYYRRTSK",
"created": "2024-01-15T10:30:00.000Z",
"lastUpdated": "2024-05-20T08:00:00.000Z",
"lastMembershipUpdated": "2024-05-18T14:22:00.000Z",
"type": "OKTA_GROUP",
"profile": {
"name": "Engineering Team",
"description": "All engineering department employees"
}
},
{
"id": "00g2xyzABCTWRYYRRXYZ",
"created": "2024-02-01T09:00:00.000Z",
"lastUpdated": "2024-05-10T07:30:00.000Z",
"lastMembershipUpdated": "2024-05-10T07:30:00.000Z",
"type": "OKTA_GROUP",
"profile": {
"name": "HR Team",
"description": "Human resources team"
}
}
]
Add User to Group
Assigns an existing Okta user to a group. Both the User ID and Group ID are required.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Group ID | String | The unique ID of the target group. |
| User ID | String | The unique ID of the user to add. |
Sample response:
{
"status": 204,
"message": "User successfully added to group.",
"userId": "00ub0oNGTSWTBKOLGLNR",
"groupId": "00g1emaKYZTWRYYRRTSK"
}
A successful add returns HTTP 204 No Content. The response body is empty on success. The sample above is a Yellow.ai wrapper response.
Remove User from Group
Removes an Okta user from a group. The user account itself is not affected.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Group ID | String | The unique ID of the group. |
| User ID | String | The unique ID of the user to remove. |
Sample response:
{
"status": 204,
"message": "User successfully removed from group.",
"userId": "00ub0oNGTSWTBKOLGLNR",
"groupId": "00g1emaKYZTWRYYRRTSK"
}
A successful removal returns HTTP 204 No Content. The response body is empty on success. The sample above is a Yellow.ai wrapper response.
Get Application
Fetches the details of an Okta application using its Application ID. Returns the app's name, label, current status, sign-on mode, and settings.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Application ID | String | The unique ID of the Okta application to retrieve. |
Sample response:
{
"id": "0oabkvBLDEKCNXBMBWKR",
"name": "template_saml_2_0",
"label": "Sample SAML App",
"status": "ACTIVE",
"created": "2023-06-01T08:00:00.000Z",
"lastUpdated": "2024-05-15T10:00:00.000Z",
"signOnMode": "SAML_2_0",
"settings": {
"app": {
"audienceRestriction": "https://www.example.com/audience",
"postBackURL": "https://www.example.com/sso/saml"
}
}
}
Assign App to User
Assigns an Okta application to a specific user, granting them access to that app.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Application ID | String | The unique ID of the application to assign. |
| User ID | String | The unique ID of the user to assign the application to. |
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Assignment Scope | String | The scope of the assignment (e.g., USER). |
Sample response:
{
"id": "00u15s1KDETTQMQYABRL",
"externalId": null,
"created": "2024-05-29T11:00:00.000Z",
"lastUpdated": "2024-05-29T11:00:00.000Z",
"scope": "USER",
"status": "ACTIVE",
"syncState": "DISABLED",
"credentials": {
}
}
Unassign App from User
Removes an application assignment from a user, revoking their access to that app.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Application ID | String | The unique ID of the application. |
| User ID | String | The unique ID of the user to unassign. |
Sample response:
{
"status": 204,
"message": "Application successfully unassigned from user.",
"userId": "00ub0oNGTSWTBKOLGLNR",
"appId": "0oabkvBLDEKCNXBMBWKR"
}
A successful unassignment returns HTTP 204 No Content. The response body is empty on success. The sample above is a Yellow.ai wrapper response.
List Factors
Returns all MFA factors currently enrolled for a user, including their type, provider, and activation status. Use this node to retrieve a factorId before calling Reset Factor.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The unique ID of the user whose factors to list. |
Sample response:
[
{
"id": "ufs2bysphxKODSZKWVCT",
"factorType": "token:software:totp",
"provider": "GOOGLE",
"status": "ACTIVE",
"created": "2024-01-20T09:00:00.000Z",
"lastUpdated": "2024-01-20T09:00:00.000Z",
"profile": {
}
},
{
"id": "sms2gt8gzgEBPUWBIFHN",
"factorType": "sms",
"provider": "OKTA",
"status": "ACTIVE",
"created": "2024-01-21T10:00:00.000Z",
"lastUpdated": "2024-01-21T10:00:00.000Z",
"profile": {
"phoneNumber": "+1-555-123-4567"
}
}
]
Enroll Factor
Enrolls a new MFA factor for a user. Requires specifying the factor type and provider. The factor will be in PENDING_ACTIVATION status until the user completes verification.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The unique ID of the user to enroll a factor for. |
| Factor Type | String | The type of factor to enroll (e.g., token:software:totp, sms). |
| Provider | String | The factor provider (e.g., GOOGLE, OKTA). |
Sample response:
{
"id": "uftm3iHSGFQXHCUSDAND",
"factorType": "token:software:totp",
"provider": "GOOGLE",
"status": "PENDING_ACTIVATION",
"created": "2024-05-29T11:30:00.000Z",
"lastUpdated": "2024-05-29T11:30:00.000Z",
"profile": {
},
"_embedded": {
"activation": {
"timeStep": 30,
"sharedSecret": "JBSWY3DPEHPK3PXP",
"encoding": "base32",
"keyLength": 6,
"qrcode": {
"href": "https://dev-12345.okta.com/api/v1/users/00ub0oNGTSWTBKOLGLNR/factors/uftm3iHSGFQXHCUSDAND/qr/00fukNElRS_Tz6k-CFhg3pH4KO2dj2guhmaapXWbc4",
"type": "image/png"
}
}
}
}
Reset Factor
Deletes a specific enrolled MFA factor for a user, allowing them to re-enroll. Use this when a user loses their phone or needs to reset their authenticator app. Call List Factors first to obtain the factorId.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| User ID | String | The ID of the user whose factor you want to reset. |
| Factor ID | String | The ID of the specific MFA factor to delete. Obtained from List Factors. |
Sample response:
{
"status": 204,
"message": "MFA factor successfully deleted. The user can now re-enroll.",
"userId": "00ub0oNGTSWTBKOLGLNR",
"factorId": "ufs2bysphxKODSZKWVCT"
}
A successful reset returns HTTP 204 No Content. The response body is empty on success. The sample above is a Yellow.ai wrapper response.
Get Audit Logs
Retrieves system log events from Okta, with optional date range filtering, custom filter expressions, and result limits. Useful for security audits, compliance checks, or building an activity-monitoring agent.
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Since | String (ISO date) | Start of the date range to query (e.g., 2026-01-01T00:00:00Z). |
| Until | String (ISO date) | End of the date range to query. |
| Filter | String | An SCIM filter expression to narrow results (e.g., by event type). |
| Limit | Number | Maximum number of log entries to return. |
Sample response:
[
{
"actor": {
"id": "00ub0oNGTSWTBKOLGLNR",
"type": "User",
"displayName": "Admin User"
},
"client": {
"ipAddress": "203.0.113.42",
"geographicalContext": {
"city": "Bangalore",
"country": "India"
}
},
"eventType": "user.session.start",
"outcome": {
"result": "SUCCESS"
},
"published": "2026-05-29T08:12:00.000Z",
"severity": "INFO",
"target": [
{
"id": "00ub0oNGTSWTBKOLGLNR",
"type": "User",
"displayName": "Jordan Lee"
}
]
}
]
Get Pending Approvals
Lists all users currently in a specified group. Useful for building approval queue or access-request workflows where a group represents users awaiting review.
Required parameters:
| Parameter | Type | Description |
|---|---|---|
| Group ID | String | The unique ID of the group to list members for. |
Optional parameters:
| Parameter | Type | Description |
|---|---|---|
| Limit | Number | Maximum number of users to return. |
Sample response:
[
{
"id": "00ub0oNGTSWTBKOLGLNR",
"status": "ACTIVE",
"created": "2024-01-15T10:30:00.000Z",
"activated": "2024-01-15T10:35:00.000Z",
"lastLogin": "2026-05-28T09:00:00.000Z",
"lastUpdated": "2026-05-28T09:00:00.000Z",
"profile": {
"firstName": "Jordan",
"lastName": "Lee",
}
},
{
"id": "00uc1pExGOQAVXZSMATP",
"status": "ACTIVE",
"created": "2024-03-10T08:00:00.000Z",
"activated": "2024-03-10T08:05:00.000Z",
"lastLogin": "2026-05-27T11:00:00.000Z",
"lastUpdated": "2026-05-27T11:00:00.000Z",
"profile": {
"firstName": "Priya",
"lastName": "Sharma",
}
}
]
Error Reference
All Okta Management action nodes return structured errors. The following codes may appear in the agent's error path:
| Error Status | Code | HTTP Status | What it means | How to fix |
|---|---|---|---|---|
INVALID_FIELD_VALUE | 8001 | 400 | One or more parameters are missing, the wrong type, or incorrectly formatted. | Check that all required fields are present and values are valid. |
AUTHENTICATION_FAILURE | 8002 | 401 | The API token is invalid, expired, or missing. | Regenerate the API token in Okta under Security > API > Tokens and update it in your Yellow.ai integration config. |
RESOURCE_NOT_FOUND | 8002–8003 | 404 | The specified user, group, application, or factor does not exist. | Verify that the ID or login value is correct and the resource exists in Okta. |
DUPLICATE_USER | 8003 | 409 | A user already exists with the provided login. | Check for an existing account with the same login before creating a new one. |
RESOURCE_ACCESS_DENIED | 9001 | 403 | The API token does not have permission to perform this action. | Check the token's admin scope in the Okta Admin Console under Security > API. |
API_LIMIT_REACHED | 9002 | 429 | The Okta API rate limit has been reached. | Reduce the frequency of requests or implement retry logic with backoff in your agent flow. |