Roles and permissions

Carrier tenancy, role flags, access patterns, and who can do what.

Carrier is the tenant. Users see only their own carrier's data. Airport is shared. A user belongs to one carrier and one Role.

Role flags

Manage flags imply read. Read-only flags exist where listed.

AreaFlags
NetworkcanReadNetwork, canManageNetwork
InventorycanReadInventory, canManageInventory
OfferscanReadOffers, canManageOffers
BookingscanReadBookings, canManageBookings
PassengerscanReadPassengers, canManagePassengers, canManageSecurePassengerData
TicketingcanReadTicketing, canManageTicketing
PaymentscanReadPayments, canManagePayments
Airport servicecanReadAirportService, canManageAirportService
DisruptionscanReadDisruptions, canManageDisruptions
IntegrationscanReadIntegrations, canManageIntegrations
AuditcanReadAudit
SetupcanManageOnboarding, canManageAgents
PeoplecanReadUsers, canManageUsers, canReadRoles, canManageRoles
PlatformcanAccessDashboard, canManageCarriers

A user can grant only permissions they hold. canManageCarriers is the cross-carrier flag.

Access patterns

  • Carrier scoped. Standard Keystone reads and writes for the user's carrier.
  • Command only. GraphQL can read, but writes go through a command. Commands are idempotent (12 to 200 character key), audited with an AuditEvent, and run in a serializable transaction.
  • Station scoped. Command only, plus a station assignment.

Separation of duties

The user who records manual payment evidence cannot approve it. Onboarding launch review needs at least two users with canManagePayments.

Manage people

/dashboard/users (Operator access) edits User and Role. Create roles from the initial administrator's permission set and assign them to staff such as agents with payment rights, station staff, and network planners.

On this page