> ## Documentation Index
> Fetch the complete documentation index at: https://docs.printools.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Quotes

> Quotes, their groups, lines and decorations.

Use the operations below to work with quotes. Each link opens an interactive reference page generated from the published OpenAPI specification.

## Operations

| Operation                                                                                               | Method and path                                     | Required scopes                                                      |
| ------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | -------------------------------------------------------------------- |
| [List quotes](/api/reference/get_v1_quotes)                                                             | `GET /v1/quotes`                                    | `quotes.read`                                                        |
| [Create a quote](/api/reference/post_v1_quotes)                                                         | `POST /v1/quotes`                                   | `quotes.write`                                                       |
| [Filter facets for the quote list](/api/reference/get_v1_quotes_facets)                                 | `GET /v1/quotes/facets`                             | `quotes.read`                                                        |
| [One quote with its groups, lines and decorations](/api/reference/get_v1_quotes_quoteId)                | `GET /v1/quotes/{quoteId}`                          | `quotes.read`                                                        |
| [Update a quote](/api/reference/patch_v1_quotes_quoteId)                                                | `PATCH /v1/quotes/{quoteId}`                        | `quotes.write`                                                       |
| [Delete a quote](/api/reference/delete_v1_quotes_quoteId)                                               | `DELETE /v1/quotes/{quoteId}`                       | `quotes.write`                                                       |
| [Duplicate a quote](/api/reference/post_v1_quotes_quoteId_duplicate)                                    | `POST /v1/quotes/{quoteId}/duplicate`               | `quotes.write`                                                       |
| [Email a quote to the customer](/api/reference/post_v1_quotes_quoteId_send)                             | `POST /v1/quotes/{quoteId}/send`                    | `quotes.write`                                                       |
| [Convert a quote into a job](/api/reference/post_v1_quotes_quoteId_convert_to_job)                      | `POST /v1/quotes/{quoteId}/convert-to-job`          | `quotes.write`, `jobs.write`                                         |
| [Add a group to a quote](/api/reference/post_v1_quotes_quoteId_groups)                                  | `POST /v1/quotes/{quoteId}/groups`                  | `quotes.write`                                                       |
| [Update a quote group](/api/reference/patch_v1_quote_groups_groupId)                                    | `PATCH /v1/quote-groups/{groupId}`                  | `quotes.write`                                                       |
| [Delete a quote group](/api/reference/delete_v1_quote_groups_groupId)                                   | `DELETE /v1/quote-groups/{groupId}`                 | `quotes.write`                                                       |
| [Add a line to a quote group](/api/reference/post_v1_quote_groups_groupId_lines)                        | `POST /v1/quote-groups/{groupId}/lines`             | `quotes.write`                                                       |
| [Update a quote line](/api/reference/patch_v1_quote_lines_lineId)                                       | `PATCH /v1/quote-lines/{lineId}`                    | `quotes.write`                                                       |
| [Delete a quote line](/api/reference/delete_v1_quote_lines_lineId)                                      | `DELETE /v1/quote-lines/{lineId}`                   | `quotes.write`                                                       |
| [Attach a decoration to a quote group](/api/reference/post_v1_quote_groups_groupId_decorations)         | `POST /v1/quote-groups/{groupId}/decorations`       | `quotes.write`                                                       |
| [Update a quote-group decoration](/api/reference/patch_v1_quote_group_decorations_decorationId)         | `PATCH /v1/quote-group-decorations/{decorationId}`  | `quotes.write`                                                       |
| [Remove a decoration from a quote group](/api/reference/delete_v1_quote_group_decorations_decorationId) | `DELETE /v1/quote-group-decorations/{decorationId}` | `quotes.write`                                                       |
| [Delete every quote matching a target](/api/reference/post_v1_quotes_bulk_delete)                       | `POST /v1/quotes/bulk/delete`                       | `quotes.write`                                                       |
| [Duplicate every quote matching a target](/api/reference/post_v1_quotes_bulk_duplicate)                 | `POST /v1/quotes/bulk/duplicate`                    | `quotes.write`                                                       |
| [Set the status of every quote matching a target](/api/reference/post_v1_quotes_bulk_status)            | `POST /v1/quotes/bulk/status`                       | `quotes.write`                                                       |
| [Convert every quote matching a target into a job](/api/reference/post_v1_quotes_bulk_convert_to_jobs)  | `POST /v1/quotes/bulk/convert-to-jobs`              | `quotes.write`, `jobs.write`                                         |
| [A presigned link to the quote PDF. Expires in 900 seconds](/api/reference/get_v1_quotes_quoteId_pdf)   | `GET /v1/quotes/{quoteId}/pdf`                      | `documents.read`, `quotes.read`                                      |
| [Every invoice raised against a quote](/api/reference/get_v1_quotes_quoteId_invoices)                   | `GET /v1/quotes/{quoteId}/invoices`                 | `invoices.read`, `quotes.read`                                       |
| [Generate an invoice from a quote](/api/reference/post_v1_quotes_quoteId_invoice)                       | `POST /v1/quotes/{quoteId}/invoice`                 | `invoices.write`, `quotes.read`                                      |
| [One quote and everything hanging off it, in one call](/api/reference/get_v1_quotes_quoteId_data)       | `GET /v1/quotes/{quoteId}/data`                     | `quotes.read`, `customers.read`, `garments.read`, `decorations.read` |

See [Authentication](/api/authentication) before your first call. For write retries, see [Writing safely](/api/idempotency).
