> ## 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.

# Jobs

> Production jobs, their structure and their activity trail.

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

## Operations

| Operation                                                                                            | Method and path                                   | Required scopes                                                    |
| ---------------------------------------------------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------ |
| [List jobs, newest first](/api/reference/get_v1_jobs)                                                | `GET /v1/jobs`                                    | `jobs.read`                                                        |
| [Create a job](/api/reference/post_v1_jobs)                                                          | `POST /v1/jobs`                                   | `jobs.write`                                                       |
| [Filter facets for the job list](/api/reference/get_v1_jobs_facets)                                  | `GET /v1/jobs/facets`                             | `jobs.read`                                                        |
| [One job with its groups, lines and decorations](/api/reference/get_v1_jobs_jobId)                   | `GET /v1/jobs/{jobId}`                            | `jobs.read`                                                        |
| [Update a job](/api/reference/patch_v1_jobs_jobId)                                                   | `PATCH /v1/jobs/{jobId}`                          | `jobs.write`                                                       |
| [Delete a job](/api/reference/delete_v1_jobs_jobId)                                                  | `DELETE /v1/jobs/{jobId}`                         | `jobs.write`                                                       |
| [The job activity feed. Names the staff who acted](/api/reference/get_v1_jobs_jobId_activity)        | `GET /v1/jobs/{jobId}/activity`                   | `jobs.read`                                                        |
| [Duplicate a job](/api/reference/post_v1_jobs_jobId_duplicate)                                       | `POST /v1/jobs/{jobId}/duplicate`                 | `jobs.write`                                                       |
| [Re-sync a job from the quote it came from](/api/reference/post_v1_jobs_jobId_sync_from_quote)       | `POST /v1/jobs/{jobId}/sync-from-quote`           | `jobs.write`, `quotes.read`                                        |
| [Add a group to a job](/api/reference/post_v1_jobs_jobId_groups)                                     | `POST /v1/jobs/{jobId}/groups`                    | `jobs.write`                                                       |
| [Update a job group](/api/reference/patch_v1_job_groups_groupId)                                     | `PATCH /v1/job-groups/{groupId}`                  | `jobs.write`                                                       |
| [Delete a job group](/api/reference/delete_v1_job_groups_groupId)                                    | `DELETE /v1/job-groups/{groupId}`                 | `jobs.write`                                                       |
| [Add a line to a job group](/api/reference/post_v1_job_groups_groupId_lines)                         | `POST /v1/job-groups/{groupId}/lines`             | `jobs.write`                                                       |
| [Update a job line](/api/reference/patch_v1_job_lines_lineId)                                        | `PATCH /v1/job-lines/{lineId}`                    | `jobs.write`                                                       |
| [Delete a job line](/api/reference/delete_v1_job_lines_lineId)                                       | `DELETE /v1/job-lines/{lineId}`                   | `jobs.write`                                                       |
| [Attach a decoration to a job group](/api/reference/post_v1_job_groups_groupId_decorations)          | `POST /v1/job-groups/{groupId}/decorations`       | `jobs.write`                                                       |
| [Update a job-group decoration](/api/reference/patch_v1_job_group_decorations_decorationId)          | `PATCH /v1/job-group-decorations/{decorationId}`  | `jobs.write`                                                       |
| [Remove a decoration from a job group](/api/reference/delete_v1_job_group_decorations_decorationId)  | `DELETE /v1/job-group-decorations/{decorationId}` | `jobs.write`                                                       |
| [Patch every job matching a target](/api/reference/post_v1_jobs_bulk_update)                         | `POST /v1/jobs/bulk/update`                       | `jobs.write`                                                       |
| [Delete every job matching a target](/api/reference/post_v1_jobs_bulk_delete)                        | `POST /v1/jobs/bulk/delete`                       | `jobs.write`                                                       |
| [Duplicate every job matching a target](/api/reference/post_v1_jobs_bulk_duplicate)                  | `POST /v1/jobs/bulk/duplicate`                    | `jobs.write`                                                       |
| [Every purchase order raised for a job](/api/reference/get_v1_jobs_jobId_purchase_orders)            | `GET /v1/jobs/{jobId}/purchase-orders`            | `purchaseorders.read`, `jobs.read`                                 |
| [Raise purchase orders for a job, one per vendor](/api/reference/post_v1_jobs_jobId_purchase_orders) | `POST /v1/jobs/{jobId}/purchase-orders`           | `purchaseorders.write`, `jobs.read`                                |
| [Every proof on a job](/api/reference/get_v1_jobs_jobId_proofs)                                      | `GET /v1/jobs/{jobId}/proofs`                     | `proofs.read`, `jobs.read`                                         |
| [Every production task on a job](/api/reference/get_v1_jobs_jobId_tasks)                             | `GET /v1/jobs/{jobId}/tasks`                      | `tasks.read`, `jobs.read`                                          |
| [One job and everything hanging off it, in one call](/api/reference/get_v1_jobs_jobId_data)          | `GET /v1/jobs/{jobId}/data`                       | `jobs.read`, `customers.read`, `garments.read`, `decorations.read` |

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