Manage the lifecycle of API Experience Hub portal members and prospects. Use when an admin needs to approve or reject prospects (candidate users), list active members, inspect and update a member's user-group assignments, or disable a member. Covers the full join → approve → assign → disable flow.
69
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Handles the membership lifecycle of an API Experience Hub (AEH) portal. Prospects are users who have requested access but are not yet portal members; members are active users with assigned user groups. This workflow lets portal administrators approve or reject prospects, audit the member list, adjust user-group assignments per member, and disable members who should no longer have access.
What you'll build: A governed portal membership list with the right people assigned to the right user groups.
Before starting, ensure:
Authentication ready
Environment already bootstrapped
manage-portal-user-groups)Retrieve the AEH connections the user has access to.
What you'll need:
Action: List connections and pick the one hosting the target portal.
api: urn:api:api-experience-hub-management
operationId: getConnections
inputs: {}
outputs:
- name: connectionId
path: $[*].id
labels: $[*].name
description: AEH connection ID (Salesforce org link) backing the portalWhat happens next: The chosen connectionId scopes every subsequent call.
Pick the target portal whose membership you want to manage.
What you'll need:
connectionId from Step 1api: urn:api:api-experience-hub-management
operationId: getAllApiPortalByConnectionId
inputs:
connectionId:
from:
variable: connectionId
description: Connection ID from Step 1
outputs:
- name: portalId
path: $[*].id
labels: $[*].name
description: ID of the portal to manageRetrieve the list of users who have requested access to the portal but are not yet members.
What you'll need:
connectionId, portalIdapi: urn:api:api-experience-hub-management
operationId: getProspects
inputs:
connectionId:
from:
variable: connectionId
description: Connection ID
portalId:
from:
variable: portalId
description: Portal ID
outputs:
- name: prospects
path: $.prospects[*]
labels: $.prospects[*].email
description: Pending prospects awaiting admin decision
- name: prospectId
path: $.prospects[*].id
description: Prospect ID used by the approve/reject operationsWhat happens next: Present the prospect list and let the admin choose who to approve or reject.
Promote a prospect to an active portal member and assign them to one or more user groups. Repeat per prospect the admin wants to approve.
What you'll need:
connectionId, portalId, prospectIdmanage-portal-user-groups Step "List User Groups")api: urn:api:api-experience-hub-management
operationId: approveProspect
inputs:
connectionId:
from:
variable: connectionId
description: Connection ID
portalId:
from:
variable: portalId
description: Portal ID
prospectId:
from:
variable: prospectId
description: The prospect being approved
approvalRequest:
userProvided: true
description: User groups to assign to the new member on approval
example:
userGroups:
- id: 00G1a000000abcD
outputs:
- name: approvedUserId
path: $.userId
description: The user ID of the newly approved memberWhat happens next: The prospect is now a portal member with the chosen group assignments.
Reject prospects who should not be granted access.
What you'll need:
connectionId, portalId, prospectIdapi: urn:api:api-experience-hub-management
operationId: rejectProspect
inputs:
connectionId:
from:
variable: connectionId
description: Connection ID
portalId:
from:
variable: portalId
description: Portal ID
prospectId:
from:
variable: prospectId
description: The prospect being rejected
outputs:
- name: rejectedProspectId
path: $.id
description: The rejected prospect's ID (for audit)What happens next: The prospect is removed from the queue. They can re-request access later.
Retrieve active portal members to audit who currently has access.
What you'll need:
connectionId, portalIdapi: urn:api:api-experience-hub-management
operationId: getCommunityUsers
inputs:
connectionId:
from:
variable: connectionId
description: Connection ID
portalId:
from:
variable: portalId
description: Portal ID
outputs:
- name: members
path: $.users[*]
labels: $.users[*].email
description: Active portal members
- name: userId
path: $.users[*].id
description: Portal-member user ID used by per-member operationsFetch the specific group assignments of one member.
What you'll need:
connectionId, portalId, userIdapi: urn:api:api-experience-hub-management
operationId: getCommunityUser
inputs:
connectionId:
from:
variable: connectionId
description: Connection ID
portalId:
from:
variable: portalId
description: Portal ID
userId:
from:
variable: userId
description: Portal-member user ID
outputs:
- name: memberUserGroups
path: $.userGroups[*]
labels: $.userGroups[*].name
description: Current user groups assigned to the memberWhat happens next: Present the current assignments; let the admin decide new memberships for Step 8.
Replace or extend the user groups assigned to a specific member.
What you'll need:
connectionId, portalId, userIdapi: urn:api:api-experience-hub-management
operationId: addGroupMappingToUser
inputs:
connectionId:
from:
variable: connectionId
description: Connection ID
portalId:
from:
variable: portalId
description: Portal ID
targetUserId:
from:
variable: userId
description: Portal-member user ID
userGroupsRequest:
userProvided: true
description: Full replacement set of user groups for this member
example:
userGroups:
- id: 00G1a000000abcD
- id: 00G1a000000efgH
outputs:
- name: updatedUserId
path: $.userId
description: Confirmed member ID with new assignments appliedWhat happens next: The member now has exactly the user groups you specified.
Revoke a member's access without deleting their record — useful for offboarding.
What you'll need:
connectionId, portalId, targetUserIdapi: urn:api:api-experience-hub-management
operationId: disableCommunityUser
inputs:
connectionId:
from:
variable: connectionId
description: Connection ID
portalId:
from:
variable: portalId
description: Portal ID
targetUserId:
from:
variable: userId
description: The member to disable
outputs:
- name: disabledUserId
path: $.userId
description: Confirmed disabled member IDWhat happens next: The disabled member can no longer sign in to the portal. Their API contracts remain intact for audit.
✅ Governed Portal Membership — Prospects are triaged and approved members have the right user-group entitlements.
manage-portal-user-groups to define the groups referenced here.curate-portal-assets to control which APIs members see.mulesoft/mulesoft-dx
b8cef7d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.