Staff a departure
Offer guides, assign a vehicle or boat, and check the seat limit.
You need canManageGuides and canManageResources. These steps use GraphQL, since the dashboard has no screen for them.
Offer a guide
mutation Offer($departureId: ID!, $guideId: ID!) {
assignGuide(input: { departureId: $departureId, guideId: $guideId, role: "lead" }, idempotencyKey: "offer-1")
}The offer starts as offered. It is refused if the guide is inactive, a certification the tour requires has expired (or expires before the departure ends), the guide has another accepted or worked assignment at the same time, or a time-off block covers the departure.
The guide, or a manager, accepts it:
mutation Respond($assignmentId: ID!) {
respondToAssignment(input: { assignmentId: $assignmentId, status: "accepted" }, idempotencyKey: "accept-1")
}Assign a vehicle or boat
mutation Assign($departureId: ID!, $resourceId: ID!) {
assignResource(input: { departureId: $departureId, resourceId: $resourceId, quantity: 1 }, idempotencyKey: "assign-1")
}The resource kind must match the tour. Its seats set the departure's capacity, never above the tour maximum. For a kayak pool the quantity is how many kayaks you take.
Check staffing
The Today page shows accepted guides over guides needed. The ratio is advice, not a block. A departure with bookings and too few accepted guides shows "Not staffed".