Exclusions & Templates
Overview
Exclusions define work that is explicitly NOT included in a bid. They are added to PDF proposals to clarify scope boundaries. Templates allow reusing common exclusions across multiple bids.
Exclusion Templates
List Templates
- Request
- Response
GET /api/exclusion-templates
Cookie: sAccessToken=...; sRefreshToken=...
[
{
"id": "uuid",
"name": "Standard Concrete Exclusions",
"description": "Common exclusions for concrete work",
"exclusions": [
"Soil testing and geotechnical reports",
"Permits and inspections",
"Utility locates and relocations"
],
"createdAt": "2025-01-15T10:00:00.000Z"
},
...
]
Roles: ADMIN, ESTIMATOR, PM
Get Template
- Request
- Response
GET /api/exclusion-templates/:id
Cookie: sAccessToken=...; sRefreshToken=...
{
"id": "uuid",
"name": "Standard Concrete Exclusions",
"description": "Common exclusions for concrete work",
"exclusions": [
"Soil testing and geotechnical reports",
"Permits and inspections",
"Utility locates and relocations",
"Dewatering and groundwater control",
"Temporary shoring and bracing"
],
"createdAt": "2025-01-15T10:00:00.000Z",
"updatedAt": "2025-01-20T14:30:00.000Z"
}
Roles: ADMIN, ESTIMATOR, PM
Create Template
- Request
- Response
POST /api/exclusion-templates
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json
{
"name": "Foundation Exclusions",
"description": "Standard exclusions for foundation work",
"exclusions": [
"Soil testing",
"Permits",
"Utility locates"
]
}
{
"id": "uuid",
"name": "Foundation Exclusions",
"message": "Template created successfully"
}
Roles: ADMIN
Update Template
- Request
- Response
PUT /api/exclusion-templates/:id
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json
{
"exclusions": [
"Soil testing and geotechnical reports",
"Permits and inspections",
"Utility locates and relocations",
"Dewatering"
]
}
{
"id": "uuid",
"message": "Template updated successfully"
}
Roles: ADMIN
Delete Template
- Request
- Response
DELETE /api/exclusion-templates/:id
Cookie: sAccessToken=...; sRefreshToken=...
{
"message": "Template deleted successfully"
}
Roles: ADMIN
Bid Exclusions
List Bid Exclusions
- Request
- Response
GET /api/bids/:bidId/exclusions
Cookie: sAccessToken=...; sRefreshToken=...
{
"exclusions": [
"Soil testing and geotechnical reports",
"Permits and inspections",
"Utility locates and relocations"
]
}
Roles: ADMIN, ESTIMATOR, PM
Update Bid Exclusions
- Request
- Response
PUT /api/bids/:bidId/exclusions
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json
{
"exclusions": [
"Soil testing",
"Permits",
"Custom exclusion for this bid"
]
}
{
"message": "Exclusions updated successfully"
}
Roles: ADMIN, ESTIMATOR
Apply Template to Bid
- Request
- Response
POST /api/bids/:bidId/exclusions/apply-template
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json
{
"templateId": "uuid"
}
{
"message": "Template applied successfully",
"exclusions": [
"Soil testing and geotechnical reports",
"Permits and inspections",
"Utility locates and relocations"
]
}
Roles: ADMIN, ESTIMATOR
info
Applying a template replaces existing exclusions. To merge, fetch current exclusions first and combine them.
Data Model
interface ExclusionTemplate {
id: string;
name: string;
description: string;
exclusions: string[];
createdAt: DateTime;
updatedAt: DateTime;
}
interface BidExclusions {
bidId: string;
exclusions: string[];
}
Related Endpoints
- Bids - Parent bid entity
- PDF Export - Exclusions appear in PDF proposals