Manage sales quotes, proposals, and quote-related operations in the sales system.
/api/quotes
The Quotes API provides endpoints for managing sales quotes including creation, retrieval, PDF generation, public sharing, and quote lifecycle management.
Creates a new sales quote for a customer.
{
"customerId": "cust_123",
"quoteNumber": "QT-2026-001",
"expiryDate": "2026-07-02T23:59:59Z",
"items": [
{
"offerId": "offer_456",
"description": "Cloud Server Premium",
"quantity": 1,
"unitPrice": 299.99,
"amount": 299.99
}
],
"subtotal": 299.99,
"tax": 29.99,
"total": 329.98,
"currency": "USD",
"notes": "Special pricing for annual commitment"
}
{
"id": "quote_789",
"quoteNumber": "QT-2026-001",
"customerId": "cust_123",
"status": "draft",
"total": 329.98,
"createdAt": "2026-06-02T10:30:00Z"
}
Gets all quotes with filtering and pagination.
| Parameter | Type | Description |
|---|---|---|
| $filter | string | OData filter expression |
| $skip | integer | Skip n records |
| $top | integer | Take n records |
{
"value": [
{
"id": "quote_789",
"quoteNumber": "QT-2026-001",
"customerId": "cust_123",
"status": "sent",
"total": 329.98,
"expiryDate": "2026-07-02T23:59:59Z"
}
],
"count": 100
}
Gets quote details by ID with all line items and actions.
| Parameter | Type |
|---|---|
| id | string |
{
"id": "quote_789",
"quoteNumber": "QT-2026-001",
"customerId": "cust_123",
"expiryDate": "2026-07-02T23:59:59Z",
"items": [
{
"offerId": "offer_456",
"description": "Cloud Server Premium",
"quantity": 1,
"unitPrice": 299.99,
"amount": 299.99
}
],
"subtotal": 299.99,
"tax": 29.99,
"total": 329.98,
"currency": "USD",
"status": "sent",
"createdAt": "2026-06-02T10:30:00Z"
}
Updates quote details (only draft quotes).
{
"expiryDate": "2026-07-10T23:59:59Z",
"items": [
{
"offerId": "offer_456",
"quantity": 2,
"unitPrice": 299.99
}
],
"notes": "Updated pricing"
}
{
"id": "quote_789",
"quoteNumber": "QT-2026-001",
"status": "draft",
"total": 659.96,
"updatedAt": "2026-06-02T11:00:00Z"
}
Perform actions on quote (send, accept, reject, revoke).
{
"action": "send",
"sendToEmail": "customer@example.com",
"message": "Please review the attached proposal"
}
{
"id": "quote_789",
"status": "sent",
"action": "send",
"actionDate": "2026-06-02T10:35:00Z"
}
Generates and downloads quote as PDF.
| Parameter | Type |
|---|---|
| id | string |
PDF file download
Gets quote details using public token (no authentication required).
| Parameter | Type |
|---|---|
| publicToken | string |
{
"id": "quote_789",
"quoteNumber": "QT-2026-001",
"items": [
{
"description": "Cloud Server Premium",
"quantity": 1,
"unitPrice": 299.99,
"amount": 299.99
}
],
"total": 329.98,
"status": "sent",
"expiryDate": "2026-07-02T23:59:59Z"
}
Allows customers to accept/reject quote using public token.
{
"action": "accept",
"customerEmail": "customer@example.com",
"customerName": "John Doe"
}
{
"id": "quote_789",
"status": "accepted",
"action": "accept",
"actionDate": "2026-06-02T14:30:00Z"
}
| Code | HTTP Status | Description |
|---|---|---|
| QUOTE_NOT_FOUND | 404 | Quote does not exist |
| QUOTE_EXPIRED | 400 | Quote has expired |
| INVALID_ACTION | 400 | Invalid action for current quote status |
| INVALID_TOKEN | 401 | Invalid or expired public token |