Rental Projects
Group related rentals under one rental project for shared planning and reporting.
Overview
A rental project groups related rentals under a single engagement — for example a multi-venue festival, a touring production, or a long-running account job that spans several quotes and orders. Projects are deliberately cross-warehouse: they have no warehouse_id of their own; warehouse scoping and availability still flow through the underlying rentals.
Projects carry a name, optional customer company and venue, date window, owner, and a fixed lifecycle status (draft → active → completed / archived).
Route: /projects
Rental Projects live under the Job Planning section of the main navigation, gated on the projects.access permission.
Rental assignment
Each rental belongs to at most one project. From the project detail page (or the rental form) you can attach and detach rentals:
- Attach links an unassigned rental to the project.
- Reassigning a rental that already belongs to another project is allowed in the UI (the FK is overwritten). The REST attach endpoint is stricter — see below.
- Detach clears the link. Soft-deleting a project also clears every linked rental.
Permissions
| Permission | Grants |
|---|---|
projects.access |
See the Rental Projects area in navigation |
projects.view |
View project records |
projects.create |
Create projects |
projects.update |
Edit projects and attach/detach rentals |
projects.delete |
Soft-delete projects |
API
| Method | URL | Summary | Ability | Weight |
|---|---|---|---|---|
GET | /api/v1/rental_projects | List rental projects with filtering, sorting, and pagination | projects:read | 2 |
POST | /api/v1/rental_projects | Create a rental project | projects:write | 3 |
GET | /api/v1/rental_projects/{rental_project} | Show a single rental project | projects:read | 1 |
PUT | /api/v1/rental_projects/{rental_project} | Update a rental project | projects:write | 3 |
DELETE | /api/v1/rental_projects/{rental_project} | Soft-delete a rental project and clear rental links | projects:write | 3 |
POST | /api/v1/rental_projects/{rental_project}/rentals | Attach a rental to a rental project | projects:write | 3 |
DELETE | /api/v1/rental_projects/{rental_project}/rentals/{rental} | Detach a rental from a rental project | projects:write | 3 |
| Ability | Description |
|---|---|
projects:read | Read rental project records |
projects:write | Create, update, and delete rental projects; attach and detach rentals |
Attach returns 422 when the rental already belongs to a different project. Detach is idempotent — repeating the call (or detaching a rental that is not on this project) returns 204 without error.
Financial / margin rollups are available in the UI; they are not exposed on this REST surface yet.
See the interactive OpenAPI reference for request and response schemas.