Subcontractors¶
Subcontractors are external companies or individuals that can be assigned to jobs. They are managed at the tenant level and can be assigned to multiple jobs.
Adding a Subcontractor¶
Owners, Project Managers, and Platform Admins can add a new subcontractor from the app:
- Open Subcontractors from the main navigation.
- Click + Add Subcontractor in the top right of the list page.
- Fill in the form:
- Name (required) — the company or individual's name.
- Specialty — trade or category (e.g. Electrical, Plumbing, Concrete).
- Phone
- Notes — internal notes about the vendor.
- Click Create Subcontractor. You'll be taken to the new subcontractor's detail page.
Accounting and other roles can view subcontractors but cannot create them.
Access¶
| Action | Allowed Roles |
|---|---|
| View list / detail | Owner, PM, Accounting, Platform Admin |
| Create / Edit | Owner, PM, Platform Admin |
| Delete | Owner, PM, Platform Admin |
API Endpoints¶
List Subcontractors¶
GET /{slug}/api/v1/subcontractors/
Returns a paginated list (25 per page, max 100).
Query parameters:
| Parameter | Description |
|---|---|
search |
Filter by name (case-insensitive contains) |
ordering |
Sort by name, -name, created_at, -created_at (default: name) |
page_size |
Override page size (max 100) |
Response envelope:
{
"count": 12,
"next": "...",
"previous": null,
"results": [
{
"id": "uuid",
"name": "ABC Electrical",
"phone": "312-555-0100",
"email": "[email protected]",
"specialty": "Electrical",
"notes": "",
"created_at": "2026-01-15T10:00:00Z"
}
]
}
Create Subcontractor¶
POST /{slug}/api/v1/subcontractors/
{
"name": "ABC Electrical",
"phone": "312-555-0100",
"email": "[email protected]",
"specialty": "Electrical",
"notes": "Preferred vendor for commercial projects"
}
Only name is required.
Retrieve / Update¶
GET /{slug}/api/v1/subcontractors/{id}/PATCH /{slug}/api/v1/subcontractors/{id}/PUT /{slug}/api/v1/subcontractors/{id}/
Delete¶
DELETE /{slug}/api/v1/subcontractors/{id}/
Deletes are soft deletes — the record is marked as deleted and hidden from all list and detail views but preserved in the database for audit purposes.
Assigning Subcontractors to Jobs¶
Once a subcontractor exists, they can be assigned to a Job:
POST /{slug}/api/v1/jobs/{job-id}/assign_subcontractor/
{ "subcontractor_id": "uuid" }
See Jobs for full assignment management details.