| name | repairshopr-portal-user |
| description | Manage portal users (customer portal access) in RepairShopr |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"administrators, customer service","api":"GET /portal_users, POST /portal_users, PUT /portal_users/{id}, DELETE /portal_users/{id}, POST /portal_users/create_invitation"} |
What I do
I manage portal users, which are customer portal login accounts. Portal users are typically contacts or customers who have credentials to access the customer portal for viewing tickets, invoices, making payments, etc. I can list, create, update, delete portal users and send invitation emails.
When to use me
Use this when:
- Setting up a customer with portal access
- Adding additional portal users for a customer's organization
- Resetting or updating a portal user's information
- Removing portal access
- Sending invitation emails to new portal users
How to use
Required API base URL:
VITE_REPAIRSHOPR_SUBDOMAIN
VITE_REPAIRSHOPR_API_KEY
Permission: "Global Admin" required for all operations.
List Portal Users (GET /portal_users)
Optional:
customer_id (integer) - Filter by customer
email (string) - Filter by email
page (integer) - Page number (100 results per page)
Create Portal User (POST /portal_users)
Body must include (fields not fully documented but typical):
email (string) - User's email (login)
password (string) - Initial password (or system generates one)
password_confirmation (string) - Confirm password
customer_id (integer) - Associated customer
contact_id (integer) - Associated contact (optional)
portal_group_id (integer) - Portal permissions group ID
Response returns the created portal user without the password.
Update Portal User (PUT /portal_users/{id})
id (integer) - Portal user ID
Body can include: password, password_confirmation, other user attributes
Delete Portal User (DELETE /portal_users/{id})
id (integer) - Portal user ID
Send Invitation (POST /portal_users/create_invitation)
Body: optionally id to target specific user? Actually the endpoint seems to be for creating an invitation; documentation shows id parameter but unclear. Typically you'd invite a portal user by email.
Example call:
const users = await skill({ name: "repairshopr-portal-user" }, {}, { customer_id: 123, method: 'GET' })
const portalUser = await skill({ name: "repairshopr-portal-user" }, {
email: "contact@client.com",
password: "SecurePass123!",
password_confirmation: "SecurePass123!",
customer_id: 123,
portal_group_id: 4
})
await skill({ name: "repairshopr-portal-user" }, {
password: "NewPass456!",
password_confirmation: "NewPass456!"
}, { id: portalUser.portal_user.id, method: 'PUT' })
await skill({ name: "repairshopr-portal-user" }, {},
{ id: portalUser.portal_user.id, method: 'DELETE', : { : portalUser.. } }
)
({ : }, {},
{ : , : , : {} }
)
Response includes:
- Portal user objects:
id, email, customer_id, contact_id, portal_group_id, created_at
- Invitation response:
{ success: true, message: "..." } or error
Important
- Requires Global Admin permissions
- Portal users need associated customer (and optionally contact)
portal_group_id determines what the user can do in the portal (must be configured in RepairShopr)
- Password rules likely apply (complexity, confirmation match)
- Invitation emails are sent to the portal user with setup instructions
- Deleting a portal user revokes their access
Related skills
repairshopr-customer-create - First create customer
repairshopr-contact-create - Optionally create contact first
repairshopr-customer-search - Find existing customers