Permissions reference

The full list of 52 permission keys, what each one controls, and the default role matrix

OwnerManager

Pistonlog ships with four working actor types — Owner, Manager, Reception and Technician — plus a fifth default role, Accountant, and 52 permission keys grouped by feature. This page is the source-of-truth reference: use it when designing a custom role or auditing what someone in your team can see.

The default actors

ActorHow it's set
OwnerThe user who created the company. One per company. Bypasses every permission check via a * wildcard.
ManagerDefault seeded role with every permission. Effectively the same as Owner for day-to-day work, but Owner-only things like managing the subscription stay locked.
ReceptionDefault seeded role for front-of-house: bookings, customers, payments, communication.
TechnicianDefault seeded role for the workshop floor: jobcards, inspections, parts.
AccountantDefault seeded role for an external bookkeeper: financials.view only, with no access to jobcards, customers or invoices.

You can also create your own custom roles per garage in Team Management and toggle permissions individually.

The 52 permission keys

Keys follow the {group}.{action} pattern.

Jobcards & workflow

KeyWhat it controls
jobcards.viewSee the jobcard list and detail pages
jobcards.createStart a new jobcard
jobcards.editEdit any field on a jobcard, including jobs/parts/labour
jobcards.deleteDelete a jobcard
workflow.viewSee the kanban / workflow board
workflow.editDrag cards between columns
activity.viewSee the activity log on a jobcard

Estimates

An estimate is a jobcard flagged as isEstimate; these keys gate estimate actions on top of the jobcards.* keys.

KeyWhat it controls
estimates.viewSee the estimates list and open estimates
estimates.createCreate a new estimate
estimates.editEdit an estimate, and promote it to a jobcard (there's no separate "promote" key)
estimates.deleteDelete an estimate

Customers, vehicles, businesses

KeyWhat it controls
customers.viewSee customer records
customers.createAdd a new customer
customers.editEdit a customer record
customers.deleteDelete a customer
businesses.view/create/edit/deleteSame four actions for business accounts (fleets)
vehicles.view/create/edit/deleteSame four actions for vehicles

Inspections

KeyWhat it controls
inspections.viewSee inspection templates and submissions
inspections.createCreate a new inspection template
inspections.add_to_jobcardStart an inspection sheet on a jobcard from a template
inspections.editEdit templates; fill in / update an in-progress inspection
inspections.deleteDelete a template or a submission

Appointments & messages

KeyWhat it controls
appointments.view/create/edit/deleteBookings on the calendar
messages.viewSee the jobcard's internal team thread
messages.createPost on jobcard threads
messages.directStart one-to-one team DMs and group conversations

Money

KeyWhat it controls
payments.viewSee totals, VAT breakdown, rates, prices on jobcards and invoices
payments.editIssue invoices, record payments
financials.viewView and download the sales/VAT and MOT financial reports
parts.view_costSee the unit cost column (what the garage paid for the part)

payments.view is enforced server-side

Users without payments.view get a stripped jobcard payload from the API — financial fields are removed before the data leaves the server. That means a future mobile or third-party integration can't bypass the check by inspecting the JSON. Owners bypass the strip.

Parts & suppliers

KeyWhat it controls
parts.manageAdd, edit and reorder parts on a jobcard
suppliers.viewSee the suppliers list
suppliers.manageAdd / edit / delete suppliers
returns.manageProcess part returns

Team, roles & garage admin

KeyWhat it controls
team.viewSee the team list
team.editInvite team members, change their role or assignable status, revoke pending invites
roles.view/create/edit/deleteManage custom roles
settings.viewOpen Settings
settings.editChange garage configuration
garages.viewSee the Billing & Subscription page for the garage

Default assignments

Default role assignments are seeded from src/db/seed-permissions.ts in the codebase. Custom roles you create override these defaults.

Permission groupOwnerManagerReceptionTechnician
Jobcards (full)yesyesview/create/editview/edit
Estimatesyesyesview/create/edit
Workflowyesyesyesyes
Customersyesyesview/create/editview only
Vehiclesyesyesview/create/editview/edit
Businessesyesyesview/create/edit
Appointmentsyesyesyes
Inspectionsyesyesview/create/add-to-jobcardview/add-to-jobcard/edit
Messages (view/create)yesyesyesyes
Messages (direct)yesyesyes
Paymentsyesyesyes
Financial reports (financials.view)yesyes
Parts (manage)yesyesyesyes
Parts (view_cost)yesyesyes
Suppliers (view)yesyesyes
Suppliers (manage)yesyes
Returns (manage)yesyesyes
Team (view)yesyesyesyes
Team (edit)yesyes
Rolesyesyes
Settingsyesyes
Billing (garages.view)yesyes
Activityyesyesyes

The Accountant default role holds exactly one key: financials.view.

Related

Was this article helpful?